sort函数比较器invalid comparator
今天在写项目的时候用到C++标准库的sort排序函数
根据需要自定义了比较器cmp
bool cmp(const vector<int>& a, const vector<int>& b) {
int sum_a = accumulate(a.begin(), a.end(), 0);
int sum_b = accumulate(b.begin(), b.end(), 0);
return sum_a <= sum_b;
}
运行时报错invalid comparator
查阅资料发现cmp比较器要满足严格弱序条件
cmp(a,b)!=cmp(b,a)
cmp(a,b)==true,cmp(b,c)==true,所以cmp(a,c)==true
修改为严格弱序即解决
bool cmp(const vector<int>& a, const vector<int>& b) {
int sum_a = accumulate(a.begin(), a.end(), 0);
int sum_b = accumulate(b.begin(), b.end(), 0);
return sum_a < sum_b;
}