不要求排序需要严格的弱排序吗?

san*_*san 3 c++ stl equality equivalence strict-weak-ordering

来自http://stdcxx.apache.org/doc/stdlibref/less-equal.html

-

您可以将less_equal对象传递给任何需要二进制函数的算法.例如,sort()算法可以接受二进制函数作为备用比较对象来对序列进行排序.less_equal将以下列方式用于该算法:

vector<int> vec1;
sort(vec1.begin(), vec1.end(),less_equal<int>());
Run Code Online (Sandbox Code Playgroud)

-

现在我很困惑,上面的文档是否正确?

jal*_*alf 7

你是对的,std::sort要求比较器定义严格的弱排序.

这意味着std::less_equal不应该使用 std::sort.它仍然可以与许多其他标准算法一起使用,它采用二进制函数,并且没有严格的弱排序要求.

  • 鉴于他们声称标准符合他们的"排序"(在本页的底部(http://stdcxx.apache.org/doc/stdlibref/sort.html)),那么他们的文档是错误的.你应该使用`less_equal`. (2认同)
  • @San:你的逻辑是倒退的.如果**提供严格的弱排序,则需要`sort`.如果您没有提供严格的弱排序,则*所有*要求都将被删除.它不需要成功,但也不需要失败. (2认同)