当 std::sort 变得不稳定时?

mak*_*er3 2 c++

在https://en.cppreference.com/w/cpp/algorithm/stable_sort 的示例中, 我得到了与 std::sort 相同的结果

是否可以按顺序准备一些项目,这会导致 std::sort 不稳定?在编写单元测试时检查排序是否真的稳定可能会很方便。

或者 std::sort 背后的算法在小向量上是稳定的,并且不可能看到 std::sort 和 std::stable_sort 之间的区别?

sep*_*p2k 5

结果中相等元素的顺序std::sort未指定。这完全取决于实现,使用哪种算法。std::sort产生与std::stable_sort所有输入完全相同的结果是完全合法的。也就是说,std::sort简单地调用std::stable_sort将是一个完全有效的实现。

所以没有输入std::sort可以保证改变相等元素的顺序。不能保证永远这样做。