C++ bind() 绑定函数与对应参数
Posted 匆忙拥挤repeat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ bind() 绑定函数与对应参数相关的知识,希望对你有一定的参考价值。
参数 绑定。 bind(), 是一个函数适配器。能改变原函数的参数顺序,能改变调用时参数个数。
auto newer = bind(origin_fun, args…); 可使用 参数占位符,相应的占位符编号就是原函数中的参数位置。
#include <functional>
bool check_size(const string &str, const string::size_type &sz) {
return str.size() > sz;
}
using namespace std::placeholders; //bind()和占位符 、ref()和cref() 都定义在<functional>
void testBind() {
auto check = bind(check_size, _1, 4); //_1是占位符,对应 check_size的第一个参数
vector<string> vec = { "abcd", "efg", "zz", "j", "hello", "stone"};
//find_if 接受一元参数的谓词predicate。check_size需要两个参数,不符合要求;check符合
// auto res = find_if(vec.begin(), vec.end(), check);
auto res = find_if(vec.begin(), vec.end(), bind(check_size, _1, 3));
cout << *res << endl;
auto newCheck = bind(check_size, _2, _1); // 定义新的入参顺序
cout << "符合条件吗:" << (newCheck(3, "stone")) << endl;
}
以上是关于C++ bind() 绑定函数与对应参数的主要内容,如果未能解决你的问题,请参考以下文章
call apply bind 的区别,this的四种绑定方式