bind()函数
头文件:#include <functional>
使用形式:bind(callable, arg_list);
callable是需要绑定的函数或函数指针(函数体,仿函数等)
arg_list是一个逗号分隔的参数列表,依次代表需要填入callable的参数
arg_list可以是占位符_1,_2,...,_n,或者实际参数。
占位符表示新生成的可调用对象newCallable的形参。
bind函数的返回值是一个可调用对象,可以通过调用该对象来执行绑定的函数。
#include <iostream>
#include <functional>
using namespace std;
using namespace std::placeholders;
void print(int a, int b, int c) {
cout << a << " " << b << " " << c << endl;
}
int main() {
auto f1 = bind(print, _1, _2, _3);
f1(1, 2, 3); // 输出:1 2 3
auto f2 = bind(print, _2, _1, 100);
f2(1, 2); // 输出:2 1 100
auto f3 = bind(print, _3, 100, _2);
f3(1, 2, 3); // 输出:3 100 2
return 0;
}
f1绑定了三个占位符,表示需要传入三个参数;f2绑定了两个占位符和一个常量100,表示需要传入两个参数,其中第一个参数在print函数中对应第二个参数,第二个参数在print函数中对应第一个参数,第三个参数固定为100;f3绑定了三个占位符和一个常量100,表示需要传入三个参数,其中第一个参数在print函数中对应第三个参数,第二个参数固定为100,第三个参数在print函数中对应第二个参数。最后,通过调用可调用对象来执行绑定的函数,输出了相应的结果。
std::placeholders
placeholders是 C++ 标准库中的一个命名空间,它包含了一组特殊的占位符对象,用于与 bind 函数一起使用。这些占位符对象允许你在绑定函数时表示某些参数是未指定的,并在稍后提供这些参数的值。
placeholders 中有以下占位符:
placeholders::_1:表示第一个未指定的参数。
placeholders::_2:表示第二个未指定的参数。
…
placeholders::_N:表示第 N 个未指定的参数。
通过在 bind 函数中使用这些占位符,你可以创建一个可调用的对象,该对象在调用时将使用后续提供的参数。这在很多情况下都很有用,例如当你需要在多个线程中异步调用函数,或者当你需要将函数的部分参数绑定在一起时。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » C++ bind和placeholders
发表评论 取消回复