use*_*508 20 c++ boost multi-index boost-multi-index
我在理解如何实现Boost.MultiIndex方面遇到了一些困难.可以说我有以下内容:
typedef multi_index_container<
employee,
indexed_by<
ordered_unique<member<employee, std::string, &employee::name> >,
ordered_unique<member<employee, int, &employee::age> >
>
> employee_set;
Run Code Online (Sandbox Code Playgroud)
我想我有一个Employee[]实际存储employee对象的数组和两个地图
map<std::string, employee*>
map<int, employee*>
Run Code Online (Sandbox Code Playgroud)
名称和年龄作为键.每个映射都具有employee*指向数组中存储对象的值.这个可以吗?
Joa*_*ñoz 30
该实现基于与指针相互链接的节点,就像您最喜欢的std::set实现一样.我将详细说明:A std::set通常实现为节点外观的rb-tree
struct node
{
// header
color c;
pointer parent,left,right;
// payload
value_type value;
};
Run Code Online (Sandbox Code Playgroud)
嗯,A multi_index_container的节点基本上是一个"多节点",其头部和索引以及有效负载一样多.例如,multi_index_container具有两个所谓的有序索引的a使用看起来像的内部节点
struct node
{
// header index #0
color c0;
pointer parent0,left0,right0;
// header index #1
color c1;
pointer parent1,left1,right2;
// payload
value_type value;
};
Run Code Online (Sandbox Code Playgroud)
(现实更复杂,这些节点是通过一些元编程等生成的,但你得到了这个想法)[...]
| 归档时间: |
|
| 查看次数: |
3417 次 |
| 最近记录: |