文章目录
介绍
标准库bind函数定义在头文件functional中,可以将bind函数看成一个通用的函数适配器,它接受一个可调用对象,并生成一个新的可调用对象来“适配”原对象的参数列表。调用bind的一般形式为:
auto newCallable = bind(callable, arg_list);
其中,newCallable 是一个可调用参数,arg_list 是一个逗号分隔的参数列表,对应于给定的 callable 参数。也就是说,当调用 newCallable 时,newCallable 会调用 callable ,并将 arg_list 中的参数传递给它。
arg_list 中的参数可能包含形如 _n 的名字,其中 n 是一个整数。这些参数是“占位符”,表示 new_Callable 的参数,它们占据了传递给 new_Callable 的参数的位置。数值 n 表示新生成的可调用对象中参数的位置: _1 、 _2 分别为 new_Callable 的第一个、第二个参数,以此类推。
占位符都定义在一个名为placeholders的命名空间中,而这个命名空间本身定义在std命名空间中。为了使用这些占位符,两个命名空间都需要写上。如
using namespace std::placeholders;
使用bind绑定参数
一个简单的例子,现有如下函数
bool check_size(const string& s, int sz)
{
return s.