STL +有序集+没有重复

Spe*_*ral 8 c++ collections stl std duplicates

我需要有一组有序的值而不重复.那么,什么是快速/最佳方法:

1 - 创建一个向量,对其进行排序并删除重复项?2 - 使用一种"排序"向量(如果存在)?

哪一个可以更有效?

Joe*_*Joe 17

你为什么不用std::set

  • 让我重组你的问题:如果他想要的顺序(例如,插入的顺序)是由它决定在集合中元素的单一性排序功能不同. (3认同)
  • 在这种情况下,您可以定义自己的排序功能。 (2认同)

Cad*_*nge 5

使用 std::set。它是有序的,不允许重复。

唯一的缺点是您无法随机访问元素,尽管这并未指定为要求。


Cas*_*Cow 5

如果你要加载一次列表然后多次使用它,那么使用std :: vector而不是std :: set可能会更有效地使用内存并迭代它.

如果你要不断添加和删除元素,你一定要使用std :: set.

对于通用目的,使用std :: set,因为它的工作量较少(构建向量需要在完成附加所有元素后对其进行排序和删除),除非您特别需要低内存使用或其他一些方面的效率性能命中,表示向量是必需的.