bool comp(const pair<int, int>& a, const pair<int,int>& b){
if (v[a.first]>v[b.first]) {
return true;
}
else if(v[a.first] == v[b.first] && a.second < b.second){
return true;
}
return false;
}
所以,我正在通过一个代码,我遇到了这个比较器函数,用于排序对的向量。现在,我对C ++很新。我试着阅读关于这个比较器如何工作的其他问题?但我无法理解。为什么返回类型是bool?返回值true意味着什么?
答案 0 :(得分:5)
当在排序数组中comp
之前找到a
时,函数b
返回true。
在此实施中,当v[a.first]
大于v[b.first]
时就是这种情况。当first
成员相等且a.second
小于b.second
时,它也会返回true。
换句话说,排序后的数组将按照降序排列v
的值。对于相等的值,数组按照second
变量按升序排序。
答案 1 :(得分:4)
在排序的情况下,它用于根据我们可以对数组进行排序的结果来比较两个值。更准确地说 -
二进制函数,它接受范围中的两个元素作为参数,并返回一个可转换为
bool
的值。返回的值表示作为第一个参数传递的元素是否被认为是在它定义的特定严格弱顺序中的第二个参数之前。该函数不得修改其任何参数。这可以是函数指针或a function object (functors)。