c++ - Boost:多索引:如何迭代与非唯一有序索引匹配的所有结果?

标签 c++ boost boost-multi-index

我有一个 Boost 多索引容器,用于存储 MyClass 成员。它有一个唯一的(first_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);

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

最佳答案

因此,请改用equal_range:

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

这会产生一对迭代器。您可以像往常一样迭代它们,或者将它们包装在迭代器范围中:

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

关于c++ - Boost:多索引:如何迭代与非唯一有序索引匹配的所有结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959950/

相关文章:

c++ - 二叉搜索树的广度优先搜索

c++ - 为什么我们不能在编译时查找指向的对象的类型?

c++ - 切换到 bison 3.0 后 yylval 和 yylloc 的问题

c++ - 捕获 boost::interrupted_exception 是否正确?

c++ - 为什么我的 C/C++ header 解析器不工作?

c++ - 链接 Windows C++ 项目以 boost 命令行体系结构类型问题

c++ - boost multi_index_container 不编译

c++ - 对右值的悬挂引用

c++ - boost multi_index 反向迭代器删除麻烦

c++ - 如何修改boost multi index的只读元素?