c++ - 使用插入 C++ 后维护无序集中的顺序

标签 c++ insert c++14 unordered-set

在构造过程中使用插入(或放置)而不进行分配后,如何保留无序集合中元素的顺序?

有关此问题的详细信息,这是一个示例:

  • 构造了一个无序的整数集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 }

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

最佳答案

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

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

如果您想要一个具有特定迭代顺序的集合,这就是 std::set 的用途。但是,std::set 始终按键值而不是插入顺序排序。

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

关于c++ - 使用插入 C++ 后维护无序集中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41405358/

相关文章:

c# - 使用 TCP 绑定(bind)将非托管 C++ 连接到 WCF

c++ - 通用 C++14 lambda 和与模板的关系

C++ 从参数参数包创建 vector 或列表

c++ - 具有已删除析构函数的类型的动态对象是如何构造的?

c++ - 如何合并两个包含 std::unique_ptr 的 vector ?

c++ - 在 c++ 中,从 unsigned int 到 int 的转换总是保留位模式吗?

c++ - 如何删除已解除引用的对象?

python - 在每第 n 列之后向数据框添加一列

php - 在两个 phpMyAdmin 表之一中插入多个(fk)数据

javascript - 如何使用 PHP 将 javascript 变量添加到 mysql 数据库中