std::sort strict weak ordering
严格的弱序,即小于语义;
在用std::sort的时候一定要注意比较函数:
1.用小于或者大于号;
2.如果两边相等应该return false;
3.或者不确定的比较也应该return false;
例如下面代码调试的时候会产生断言失败,relase环境下会造成crash,
严格的弱序,即小于语义;
在用std::sort的时候一定要注意比较函数:
1.用小于或者大于号;
2.如果两边相等应该return false;
3.或者不确定的比较也应该return false;
例如下面代码调试的时候会产生断言失败,relase环境下会造成crash,
去掉等号就可以了。
#include <algorithm>
#include <vector>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> vi;
for (int i=0; i<100; i++) {
vi.push_back(i);
}
vi.push_back(3);
vi.push_back(6);
vi.push_back(77);
std::sort(vi.begin(), vi.end(), [](int left, int right) {
return left <= right;
});
system("pause");
return 0;
}