使用insert C++后维护无序集合中的顺序

use*_*495 4 c++ insert unordered-set c++14

如何在构造期间使用insert(或emplace)而不分配时,如何在无序集合中保留元素的顺序?

有关此问题的详细信息,请参阅以下示例:

  • 构造了一个无序的整数集S.
  • 将480插入S:S = {480}
  • 32插入S:S = {32 480}
  • 23插入S:S = {23 32 480}
  • 16插入S:S = {16 23 32 480}
  • 19插入S:S = {19 480 32 23 16}

你可以看到最后一次插入如何破坏序列顺序(我假设通过重建一个更大的集合并移动元素).我正在寻找一种方法来在插入元素之后保留先前的顺序,而无需在构造函数中专门分配.

Sam*_*hik 10

根据定义,无序集合是无序的.没有已定义的顺序,集合中元素的迭代顺序可以随时更改.

在构造函数中分配一些东西也不会有任何区别.

如果你想要一个具有特定迭代顺序的集合,那就是为了什么std::set.但是,std::set始终按键值排序,而不是按顺序排序.

您可能需要将多个容器组合在一起,以实现所需的访问语义.