问题
#include <iostream>
using namespace std;
bool Gt(const int &a, const int &b)
{
return a >= b;
}
int num[100];
int main()
{
num[0] = 100;
num[1] = 100;
num[3] = 10;
sort(num, num+3, Gt);
for (int i = 0; i < 3; i ++)
cout << num[i] << endl;
return 0;
}
问:上面程序输出什么?
答:100 100 10 ?
错!输出不确定。
分析:
比较函数有个坑,不满足严格弱关系序(strict weak ordering)。
参见C++参考手册:sort的约束二。
严格弱关系序参见wiki
总结:
大坑小坑都是坑,坑坑害人。