function template
<functional>

std::bind1st

template <class Operation, class T>  binder1st<Operation> bind1st (const Operation& op, const T& x);
绑定第一个参数的函数对象
此函数使用二进制函数对象op,通过将第一个参数绑定到固定值x来构造一个一元函数对象。

返回的函数对象bind1st定义了其operator(),使其只能接受一个参数。此参数用于调用二进制函数对象op,并将x作为第一个参数的固定值。

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

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

要将第二个参数绑定到特定值,请参阅 bind2nd

参数

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

返回值

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

示例

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

int main () {
  int numbers[] = {10,20,30,40,50,10};
  int cx;
  cx = count_if (numbers, numbers+6, bind1st(equal_to<int>(),10) );
  cout << "There are " << cx << " elements that are equal to 10.\n";
  return 0;
}


There are 2 elements that are equal to 10.


另见