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

时间:2013-03-22 16:52:59

标签: c++ function sorting binary std

我正在阅读c ++参考网站。

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

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

1 个答案:

答案 0 :(得分: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);
}

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