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++相当陌生。我尝试阅读有关该比较器如何工作的其他问题?但我无法理解。为什么返回类型是布尔值?返回值 true 意味着什么?
a
应该在排序数组中b
之前找到时,函数comp
返回 true。
在此实现中,当任一v[a.first]
大于 v[b.first]
时就是这种情况。当first
成员相等且a.second
小于 b.second
时,它也返回 true。
换句话说,排序后的数组将被排序以按降序传递v
值。对于相等的值,数组根据 second
变量按升序排序。
在排序的情况下,它用于根据结果比较两个值,我们可以根据结果对数组进行排序。更准确地说——
接受范围内的两个元素作为参数的二进制函数,并返回可转换为
bool
的值。返回的值指示作为第一个参数传递的元素是否被视为在其定义的特定严格弱排序中先于第二个参数。该函数不得修改其任何参数。这可以是函数指针或函数对象(函子)。