评估C 中的二元谓词
Evaluation of the binary predicates in C++
如何评估二进制谓词?
例如,如果我想按降序排序,那么我应该写:
bool isGreater(int x, int y)
{
return x > y;
}
或
bool isGreater(int x, int y)
{
return y > x;
}
两者到底有什么区别?我了解这两个参数将相互比较,但是返回结果应该是什么-true
或false
?这是怎么重要的?因此,我的问题基本上是,我如何确定第一个参数是否应该在第二个参数之前进行,如果我不知道它们通过的顺序?
sort()
函数将以这种方式调用(height
是要排序的数组):
sort(height, height+N, isGreater);
NOTE :我确实参考了这样的链接,但它们并没有明确关注此问题。
有人可以澄清我的疑问吗?谢谢!
这是一个非常简单的上升顺序排序算法:
for i ← 1 to length(A)-1
j ← i
while j > 0 and A[j-1] > A[j]
swap A[j] and A[j-1]
j ← j - 1
end while
end for
与谓词" mycompare(x,y)" {return x< = y;}"看起来像这样:
for i ← 1 to length(A)-1
j ← i
while j > 0 and MyCompare(A[j-1], A[j]) == false
swap A[j] and A[j-1]
j ← j - 1
end while
end for
现在,排序算法可以通过更改谓词来按任何顺序排序。由于此谓词是std :: sort的参数,表示std :: sort可以按任何顺序排序。
相关文章:
- std::condition_variable::wait()如何评估给定的谓词
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 为 C++11 算法组合多个谓词
- 处理 std::enable_if<...中谓词的逻辑"OR">
- std::map与谓词与初始化列表
- 尝试使用谓词函数会导致错误:"std::sort"未找到匹配的重载函数
- 如何有效地操作满足给定谓词的向量中的所有项目?
- 排序谓词没有传递对索引对象的引用?
- 将 unordered_map 与 Catch2 谓词一起使用时类型不匹配
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 重写派生类中的二元运算符
- 如何在算法中使用谓词函数find_if?
- 是否可以使用三元切换/控制/谓词成员函数调用?
- 评估C 中的二元谓词
- 在使用二元谓词的find_first_of函数上给出错误
- Std:list.sort(),二元谓词
- 实现推力二元谓词
- STL映射和multimap中二元谓词的行为…
- 理解Thrust中的二元谓词