描述
使用此函数可以预先将部分要传入的函数参数绑定到函数中,后续调用只需要传剩下的即可。
// 函数原型
template< class F, class... Args >
constexpr /*unspecified*/ bind( F&& f, Args&&... args );
输入为函数f
和任意个函数参数args
。返回值为未定类型的函数对象。
通常需要结合std::placeholder,用于占位尚未绑定的参数。
示例
#include <iostream>
#include <functional>
void f(int a1, int a2, int a3){
std::cout << a1 << ' ' << a2 << ' ' << a3 << std::endl;
}
int main()
{
// 将函数f和后面的三个参数绑定,其中前两个参数使用placeholder,后续调用再实际传
auto f1 = std::bind(f, std::placeholders::_2, std::placeholders::_1, 10);
// 此时传入的参数依次对应于placeholders::_1, _2, ……
// 结合上方bind时指定的顺序,相当于执行 f(6, 5, 10)
f1(5, 6);
}
// out: 6 5 10