Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::使用相等的int排序行为_C++_Sorting_Std - Fatal编程技术网

C++ std::使用相等的int排序行为

C++ std::使用相等的int排序行为,c++,sorting,std,C++,Sorting,Std,当与相等的int一起使用时,std::sort的行为是什么?它将使它们保持相同的顺序,还是只是执行一些不可预测的操作?不会保留等价元素的顺序,是吗。但是,在int的情况下,您不会注意到差异,除非您使用一些非平凡的排序,如以下示例所示: struct half_less { bool operator()(int a, int b) const { return (a / 2) < (b / 2); } }; std::sort(begin, end, half_less());

当与相等的int一起使用时,std::sort的行为是什么?它将使它们保持相同的顺序,还是只是执行一些不可预测的操作?

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

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

std::sort(begin, end, half_less());
struct-half\u-less
{
布尔运算符()(inta,intb)常量{return(a/2)<(b/2);}
};
排序(开始、结束、减半());

std::stable\u sort
std::sort
更合适时,vitaut是正确的。我只想补充一点,如果相等整数的顺序改变,你不会注意到。只有对碰巧具有标识属性的值进行排序时,这才重要。例如,如果您存储指向整数的指针并按整数值排序。

对,或者如果使用了比较函子提供的一些非平凡排序。@vitaut:您可以使用什么“非平凡排序”来检测排序的不稳定性?@Roger Pate:任何非等数值被视为等价的整数。这听起来很奇怪,但我没有看到OP为什么关心Its的顺序的其他解释。不是(A/2)<(b/2)与< b?@斑马鱼不一样,例如考虑a=2和b=3。