我很难理解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;
假设我有一个实际存储employee
对象的数组Employee[]
和两个映射
map<std::string, employee*>
map<int, employee*>
以姓名和年龄为关键字。每个映射都有指向数组中存储的对象的employee*
值。这样可以吗?
发布于 2010-11-18 03:32:13
下面给出了here对底层结构的简短解释:
就像你最喜欢的std::set
实现一样,它的实现是基于节点和指针的互连。我将对此进行详细说明:std::set
通常实现为rb树,其中的节点如下所示
struct node
{
// header
color c;
pointer parent,left,right;
// payload
value_type value;
};
嗯,multi_index_container
的节点基本上是一个“多节点”,它有和索引一样多的头部和有效负载。
struct node
{
// header index #0
color c0;
pointer parent0,left0,right0;
// header index #1
color c1;
pointer parent1,left1,right2;
// payload
value_type value;
};
(实际情况更为复杂,这些节点是通过一些元编程等方式生成的,但你可以理解其中的意思)……
https://stackoverflow.com/questions/4206349
复制相似问题