Boost:Multi-index:如何遍历与非唯一有序索引匹配的所有结果?

时间:2018-06-21 03:28:30

标签: c++ boost boost-multi-index

我有一个Boost多索引容器,用于存储MyClass个成员。它具有唯一索引(first_field)和非唯一索引(second field):

typedef multi_index_container<
MyClass,
indexed_by<
        ordered_unique<member<MyClass, std::string, MyClass.first_field>>,
        ordered_non_unique<member<MyClass &, std::string, MyClass.second_field>>>
> MyClass_Set;

如果我通过第二个索引搜索容器:

auto it = container.get<1>().find("second_field_value_to_be_searched);

我得到了一个常量迭代器。如何遍历容器中与上述谓词匹配的所有元素?

1 个答案:

答案 0 :(得分:3)

因此,请改用equal_range

auto r = container.get<1>().equal_range("second_field_value_to_be_searched");

这将产生一对迭代器。您可以照常进行迭代,也可以将它们包装在迭代器范围内:

for (auto& record : boost::make_iterator_range(r)) {
}