function template
<functional>

std::bind2nd

template <class Operation, class T>  binder2nd<Operation> bind2nd (const Operation& op, const T& x);
返回第二个参数被绑定的函数对象
此函数通过将二元函数对象 op 的第二个参数绑定到固定值 x 来构造一个一元函数对象。

返回的函数对象bind2ndoperator()的定义方式是只接受一个参数。此参数用于调用二元函数对象 op,并将 x 作为第二个参数的固定值。

它的定义与以下行为相同:

1
2
3
4
5
template <class Operation, class T>
  binder2nd<Operation> bind2nd (const Operation& op, const T& x)
{
  return binder2nd<Operation>(op, typename Operation::second_argument_type(x));
}

要将第一个参数绑定到特定值,请参阅 bind1st

参数

op
派生自 binary_function 的二进制函数对象。
x
op 的第二个参数的固定值。

返回值

一个一元函数对象,等同于 op,但第二个参数始终设置为 x
binder2nd 是派生自 unary_function 的类型。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
// bind2nd example
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;

int main () {
  int numbers[] = {10,-20,-30,40,-50};
  int cx;
  cx = count_if ( numbers, numbers+5, bind2nd(less<int>(),0) );
  cout << "There are " << cx << " negative elements.\n";
  return 0;
}


There are 3 negative elements.


另见