7

在c ++“标准库”中,是否有任何“关联”(即“键值”)容器/数据结构能够按插入顺序保持顺序?

我已经看到了几个关于此的主题,但是,似乎大多数在 C++11 之前。

有些人建议使用“boost::multi_index”,但如果可能的话,我会“宁愿”使用标准容器/结构。

我看到 C++11 有几个显然是“无序”的关联容器:link

这些中的任何一个,以某种方式,“可配置”,以便它们仅按插入顺序排序?

谢谢!

C

4

3 回答 3

2

不。

您正在将线性访问与随机混合。不是很好的床伴。

只需使用向量/列表(即插入顺序)以及使用前者索引的地图即可。

于 2013-09-21T05:30:26.670 回答
0

不。在无序映射中,也没有按照插入顺序存储。

您可以使用矢量来跟踪密钥

于 2013-09-21T08:47:28.793 回答
0

不; 这种能力显然是以性能为名牺牲的。

需要在包括重新散列在内的操作中保留等效项的顺序,但无法指定原始顺序。理论上,您可以std::rotate在每次插入后使用或类似方法将对象排列为所需的顺序。显然是不切实际的,但事实证明能力不足有点武断。

您最好的选择是将子序列保存在内部容器中。您可以使用迭代器适配器来迭代这样一个“深”容器,就好像它是一个序列一样。这样的实用程序可能可以在 Boost 中找到。

于 2013-09-21T06:45:11.313 回答