std :: sort是否会改变相等元素的相对顺序?

时间:2009-10-27 18:08:09

标签: c++ stl

标准是否通过使用std :: sort来保证相等元素的顺序不会改变(呃,忘记了这个术语)或者我是否需要考虑另一种解决方案来实现这个目标?

5 个答案:

答案 0 :(得分:19)

std::sort并不保证稳定(您试图想到的这个词)。正如您所猜测的那样,std::stable_sort保证稳定。 std::stable_sort还提供了最坏情况复杂性的保证,std::sort没有。 std::sort平均来说通常会更快。

答案 1 :(得分:3)

来自C ++参考:here

  

不能保证相互比较的元素保持原始的相对顺序。

您可能需要stable_sort,但请注意它不是那么快(平均而言)

答案 2 :(得分:2)

不,如果你想保证使用std :: stable_sort

答案 3 :(得分:2)

不明确不保证这一点。如果你需要维护相对顺序,请使用stable_sort。

排序文档,包括对等效元素的引用

答案 4 :(得分:2)

您所描述的内容的术语是stability

来自SGI的STL docs

  

注意:sort不保证稳定。

如果需要,请使用stable_sort