-3

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

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

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

4

1 回答 1

9

关于功能:

  • 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并且它将使用它进行排序。

于 2013-03-22T16:57:56.177 回答