访问boost::multi_index中hashed_unique中的数据
Accessing data in hashed_unique in boost::multi_index
我第一次尝试使用boost的多索引,但我似乎无法理解我在网上看到的所有代码。
首先:我的目标是拥有一个以枚举为键的容器,以便直接访问,并能够根据原始插入顺序对其进行迭代。
我已经定义了我的助推元素如下:
struct VarMapEle {
SolutionVariableNames first;
uint second;
};
struct var_tag {};
struct rand_tag {};
typedef multi_index_container<
VarMapEle,
indexed_by<
random_access<tag<rand_tag>>, // this index represents insertion order
hashed_unique<tag<var_tag>, member<VarMapEle, SolutionVariableNames, &VarMapEle::first>>
>
> VariableMap;
我怎样才能完成前面提到的任何一项任务?
multi_index_container
可以被认为是一堆容器(在您的示例中,一个类似于std::vector
-random_acces
-std::unordered_set
-hashed_unique
-),它们恰好作用于相同的底层元素集合。使用get<tag>()
或get<n>()
访问每个"容器"或索引,其中n是indexed_by
部分中指定的索引的基于0的顺序。因此,要按插入顺序迭代元素,您需要访问索引#0,并像使用std::vector
:一样使用它
for(const VarMapEle& e:m.get<rand_tag>()){
std::cout<<e.first<<","<<e.second<<"n";
}
类似地,索引#1:提供了查找功能
auto it=m.get<var_tag>().find(SolutionVariableNames{1});
std::cout<<it->second<<"n";
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么 std::unique 不调用 std::sort?
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何对点云数据进行排序
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- C++:'unique vector'数据结构