在c ++“标准库”中是否有任何“关联”(即“键值”)容器/数据结构,它具有按插入顺序保存顺序的能力?
我已经看过几个关于此问题的主题,但似乎大多数都是在C ++ 11之前。
有人建议使用“boost :: multi_index”,但是,如果可能的话,我会“宁愿”使用标准的容器/结构。
我看到C ++ 11有几个显然是“无序”的关联容器:link。
这些中的任何一种,通过某种方式,“可配置”,以便它们只按插入顺序排序吗?
谢谢!
C
答案 0 :(得分:1)
答案 1 :(得分:0)
没有;这种能力显然是以表演的名义牺牲的。
需要在包括重新处理在内的操作中保留等效项的顺序,但是无法指定原始顺序。理论上,您可以使用std::rotate
等在每次插入后将对象置换为所需的顺序。显然是不切实际的,但它证明缺乏能力有点武断。
最好的办法是将子序列保留在内部容器中。您可以使用迭代器适配器迭代这样的“深”容器,就像它是单个序列一样。这样的实用程序可以在Boost中找到。
答案 2 :(得分:0)
没有。 在无序地图中,也没有根据插入顺序存储。
您可以使用向量来跟踪键!