C++标准库是否按插入顺序排序?

Set*_*gie 14 c++ stl set c++-standard-library

C++标准库是否具有"有序集"数据结构?通过有序集合,我的意思是与普通的完全相同,std::set但是它会记住您将项目添加到其中的顺序.

如果没有,模拟一个的最佳方法是什么?我知道你可以做一些事情就像有一对配对,每一对都存储它被添加的数字和实际值,但如果有一个更简单的解决方案,我不想跳过箍.

Ker*_* SB 17

没有单一的同类数据结构将具有此属性,因为它是顺序的(即元素按插入顺序排列)或关联的(元素根据值按某种顺序排列).

最好的,干净的方法可能类似于Boost.MultiIndex,它允许您在容器上添加多个索引或"视图",因此您可以拥有顺序索引和有序索引.


pg1*_*989 7

为什么不传递一个std ::对象和一个在每次插入时递增的索引,而不是使用你正在使用的任何类型的std :: set?

  • 如果您在插入现有值时非常小心,并且您以某种方式制定了如何在恒定时间内找到最大索引的策略,那么这将是可行的。也许 `std::map<T, unsigned int>` 会稍微优雅一些​​,因为它的值类型已经是一对(并且您将获得可变的映射元素)。 (2认同)