std :: sort c ++什么是二进制函数

use*_*901 -3 c++ sorting binary function std

我正在阅读c ++参考站点.

我不明白这是什么意思?给你解释它的意思和例子

comp二进制函数,它接受范围中的两个元素作为参数,并返回一个可转换为bool的值.返回的值表示作为第一个参数传递的元素是否被认为是在它定义的特定严格弱顺序中的第二个参数之前.该函数不得修改其任何参数.这可以是函数指针或函数对象.

Jos*_*eld 8

关于功能:

  • Nullary - 没有任何争论,例如void nullary()
  • 一元 - 拿一个参数,例如void unary(int)
  • 二进制 - 有两个参数,例如void binary(int, float)
  • 三元 - 有三个参数,例如void ternary(int, float, char)
  • N-ary - 需要N个参数

所以二元函数是一个带有两个参数的函数,例如void foo(int x, float y);.传递给的比较函数std::sort应该是一个二元函数,它从你正在排序的序列中获取两个元素并返回一个bool.例如,如果您要对序列进行排序X,则该函数应具有签名bool compare(const X&, const X&);.

这是一个示例用法:

bool less_than(const int& a, const int& b)
{
  return a < b;
}

int main()
{
  std::vector<int> v = {5, 1, 2, 4, 3};
  std::sort(v.begin(), v.end(), less_than);
}
Run Code Online (Sandbox Code Playgroud)

这里less_than是一个二元函数,如果第一个参数小于第二个参数,则返回true.这正是这样std::less做的.它的强大之std::sort处在于它允许您提供任何返回的二进制函数,bool并使用它进行排序.