【发布时间】:2013-12-01 14:18:02
【问题描述】:
长期读者第一次海报!我正在玩 boost::multi_index 容器的东西,并且有一个相当深入的问题,希望 boost 或 C++ 容器专家可能知道(我在 C++ 容器方面的知识非常基础)。作为参考,可以在此处找到有关复合键的 boost 文档:boost::multi_index composite keys.
当使用复合键时,文档指出“复合键按字典顺序排序,即按第一个键执行排序,如果第一个键相等,则按第二个键执行排序,等等”。这是否意味着存储结构以便查找特定的 2 部分复合键将花费 O(n=1) 时间,即容器是否已排序,以便有一个直接指向每个项目的指针,或者提升容器检索与组合键的第一部分匹配的列表,然后需要执行与键的第二部分匹配的项目的搜索,因此速度较慢?
例如,如果我要使用两个不同的索引手动维护两个容器,并且想要查找与特定的 2 部分查询匹配的项目,我可能会过滤第一个容器以查找与查询的第一部分匹配的所有项目,并且然后过滤与查询的第二部分匹配的项目的结果。因此,这种手动方法将有效地涉及两次搜索。 boost 是否有效地做到了这一点,或者它是否通过使用复合键以某种方式提高了效率?
希望我已经在这里解释了自己,但请提出问题,我会尽力澄清我的意思!
【问题讨论】:
-
一个例子说 1000 个单词。它还让我们有机会快速进行一些测量并深入研究库的实现。
-
我认为既然 boost::multi_index 文档中有一个示例(通过我输入的超链接),就不值得在这里重复了?
标签: c++ boost composite-key processing-efficiency multi-index