gpt4 book ai didi

c++ - boost::multi_index 通过带参数的函数调用索引

转载 作者:行者123 更新时间:2023-11-28 03:59:52 24 4
gpt4 key购买 nike

我正在尝试制作一个 boost::multi_index 容器,它使用带参数的成员函数作为键。

class Data {
public:
std::string get(const std::string & _attr) { return _internals_fetch_data(_attr); }

/*
assume some implementation for storing data in some structure(s)
*/
};

假设我有一个包含这些数据项的矩形 列表,我想在上面添加多个索引。 矩形 表示列表中的所有项目都通过 get() 具有相同的属性

boost::multi_index 声明类似于

typedef multi_index_container<
Data,
indexed_by<
ordered_unique<
BOOST_MULTI_INDEX_CONST_MEM_FUN(Data,String,get)
>
>
> my_container;

除了 BOOST_MULTI_INDEX_CONST_MEM_FUNCT() 没有这些功能。组合键仍然可以与成员变量一起使用。

我该如何解决这个问题?看起来我不能给 ordered_unique<> 一个 boost::function1

编辑:

经过一番思考,这是我正在尝试做的事情的要点。

boost::multi_index 在编译时决定它的索引特性。我如何规避这些功能并使用运行时确定的索引?

最佳答案

你想把什么作为参数传递给函数?什么是 const std::string & _attr

无论如何,BOOST_MULTI_INDEX_CONST_MEM_FUN只是 const_mem_fun 的一个宏仿函数。你可以写你自己的仿函数 const_mem_fun1 .但我不知道你打算如何使用它。实现const_mem_fun通过引用(或包装器,例如 shared_ptr )接收对象,然后调用不带参数的成员函数。

boost::multi_index::indexed_by需要类型,而不是对象,以及 ordered_unique期望类型。这就是为什么你不能写 const_mem_fun1<Data, std::string, &Data::get>("string") .为什么不能使用函数 get没有参数并在 Data 中创建特殊字符串字段结构?

struct Data {
std::string _attr;
public:
std::string get() const { return _internals_fetch_data(_attr); }
};

关于c++ - boost::multi_index 通过带参数的函数调用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1369267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com