我正在尝试使用Boost multi_index解决问题。 如果我有2个结构如下:
struct MyStruct1
{
int x;
int y;
};
struct MyStruct2
{
int a;
MyStruct1 b;
};
如何使用MyStruct2 :: b.x定义索引? 这可能吗?
尝试的是:
struct xIndex{};
typedef multi_index_container<
MyStruct2,
indexed_by<
ordered_unique<
tag<xIndex>,
member<MyStruct2, int, &MyStruct2::a::x>
>
>
> MyContainer;
但这不起作用。
感谢您提供任何信息/建议。
答案 0 :(得分:1)
有几种方法可以实现这一目标,但所有这些方法都要求您编写一些样板代码。最简单的是提供user-defined key extractor:
struct MyStruct2XExtractor
{
typedef int result_type;
int operator()(const MyStruct2& m)const
{
return m.b.x;
}
};
...
typedef multi_index_container<
MyStruct2,
indexed_by<
ordered_unique<
tag<xIndex>,
MyStruct2XExtractor
>
>
> MyContainer;