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() 绑定函数与对应参数的主要内容,如果未能解决你的问题,请参考以下文章

C++ bind() 绑定函数与对应参数

理解bind方法使用与实现

C++ Primer学习笔记

call apply bind 的区别,this的四种绑定方式

函数方法:call() apply() bind() 自定义绑定对象

STL之图解bind函数对象