Boost.MultiIndex:使用多个字段搜索元素
我使用 Boost multi_index 容器根据 2 个整数键 K1 和 K2 存储对象。我可以轻松地检索满足“K1 == X”的所有元素的迭代器,例如,通过获取第一个索引并使用 find() 函数(同上 K2 和值 Y),但我正在寻找一种方法获取满足 K1 == X 和 K2 == Y 的所有元素的迭代器。一个明显的解决方案是获取满足 K1 == X 的所有元素的迭代器,然后使用谓词 K2 == Y 构建 boost::filter_iterator,但有吗一种只能从 Boost.MultiIndex 做到这一点的方法(也许更有效)?
谢谢马蒂厄
I'm using a Boost multi_index container to store objects according to 2 integer keys K1 and K2. I can easily retrieve an iterator over all elements satisfying "K1 == X", for instance, by taking the first index and using the find() function (idem for K2 and a value Y), but I'm looking for a way to get an iterator over all elements satisfying both K1 == X and K2 == Y. An obvious solution is to get an iterator over all elements satisfying K1 == X then build a boost::filter_iterator with the predicate K2 == Y, but is there a way to do that (maybe more efficiently) only from Boost.MultiIndex?
Thanks
Matthieu
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 boost::multi_index::composite_key 同时具有
K1
和K2
。这是一个小例子,也在 ideone.com 上:
You can use a boost::multi_index::composite_key with both
K1
andK2
.Here a small example, which is also on ideone.com: