比较器功能在C++意义和工作

Comparator function in C++ meaning and working?

本文关键字:工作 C++ 功能 比较器      更新时间:2023-10-16
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 的值。返回的值指示作为第一个参数传递的元素是否被视为在其定义的特定严格弱排序中先于第二个参数。

该函数不得修改其任何参数。这可以是函数指针或函数对象(函子)。