c++适配器bind的用法
时间: 2023-07-08 14:21:55 浏览: 56
C++中的bind适配器用于将一个函数对象绑定到一个或多个参数上,生成一个新的函数对象。这个新的函数对象可以像原函数一样被调用,但是其中一些参数已经被绑定了。
bind适配器的用法如下:
```c++
#include <iostream>
#include <functional>
using namespace std;
using namespace placeholders;
int add(int a, int b, int c) {
return a + b + c;
}
int main() {
auto f1 = bind(add, 1, 2, 3);
cout << f1() << endl; // 6
auto f2 = bind(add, _1, _2, _3);
cout << f2(1, 2, 3) << endl; // 6
auto f3 = bind(add, _2, 100, _1);
cout << f3(10, 20) << endl; // 130
return 0;
}
```
在上面的例子中,我们首先定义了一个add函数,它接受三个参数并返回它们的和。然后我们使用bind适配器将这个函数绑定到不同的参数上,生成了三个新的函数对象f1、f2和f3。
f1绑定了1、2和3三个参数,因此它的调用没有参数,返回值为6。
f2使用了占位符_1、_2和_3,表示它将接受三个参数。当我们调用f2时,传递给它的三个参数将分别替换_1、_2和_3,返回值为它们的和。
f3绑定了第二个参数和占位符_1、_2,因此它的调用需要传递两个参数。这两个参数分别替换_2和_1,返回值为它们的和再加上100。
通过bind适配器,我们可以灵活地调用函数,并对函数的参数进行绑定和调整。