比较器功能在C++意义和工作
Comparator function in C++ meaning and working?
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
的值。返回的值指示作为第一个参数传递的元素是否被视为在其定义的特定严格弱排序中先于第二个参数。该函数不得修改其任何参数。这可以是函数指针或函数对象(函子)。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 链表c++插入,所有情况都已检查,但没有任何工作
- 为什么stream::忽略未按预期工作