function template
<functional>
std::bind2nd
template <class Operation, class T> binder2nd<Operation> bind2nd (const Operation& op, const T& x);
返回第二个参数被绑定的函数对象
此函数通过将二元函数对象
op 的第二个参数绑定到固定值
x 来构造一个一元函数对象。
返回的函数对象
bind2nd其
operator()的定义方式是只接受一个参数。此参数用于调用二元函数对象
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.
|
另见
- bind1st
- 返回第一个参数被绑定的函数对象 (函数模板)
- binder2nd
- 生成第二个参数被绑定的函数对象类 (类模板)
- unary_function
- 一元函数对象基类 (类模板)
- binary_function
- 二元函数对象基类 (类模板)