std :: sort行为与int相等

时间:2010-11-05 15:22:46

标签: c++ sorting std

当std :: sort与相同的int一起使用时,它会保持相同的顺序或只做一些不可预测的事情,这是什么行为?

2 个答案:

答案 0 :(得分:16)

std::sort不保留等效元素的顺序,std::stable_sort。但是,在int s的情况下,您将不会注意到差异,除非您使用一些非平凡的排序,如下例所示:

struct half_less
{
    bool operator()(int a, int b) const { return (a / 2) < (b / 2); }
};

std::sort(begin, end, half_less());

答案 1 :(得分:6)

@vitaut是对的。我只想补充一点,你不会注意到是否改变了相等整数的顺序。这只有在您对具有识别属性的值进行排序时才有意义。例如,如果存储指向整数的指针并按整数值排序。