保持插入顺序的C + 11关联容器?

时间:2013-09-21 05:27:18

标签: c++ c++11 stl containers

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

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

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

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

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

谢谢!

C

3 个答案:

答案 0 :(得分:1)

没有

您将线性访问与随机混合。不是很好的床上人。

只需使用vector / list(即插入顺序)以及使用前者索引的地图。

答案 1 :(得分:0)

没有;这种能力显然是以表演的名义牺牲的。

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

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

答案 2 :(得分:0)

没有。 在无序地图中,也没有根据插入顺序存储。

您可以使用向量来跟踪