参数绑定

    xiaoxiao2024-12-03  4

    对于只在少数几个地方使用的简单操作,lambda表达式是最有用的。

    如果lambda的捕获列表为空,通常可以用函数替代。

    但是对于捕获局部变量的lambda,用函数来代替就不是那么容易了

    有些泛型算法只能接受一元谓词,为了让普通函数代替lambda表达式,必须解决如何传递一个形参的问题

    标准库bind函数

    定义在头文件functional中,可以将bind函数看做一个通用的函数适配器,接受一个可调用对象,生成一个新的可调用对象来适应原对象的参数列表。

    以下为C++ PRIMER 5th 10.24习题程序:

    #include<string> #include<functional> #include<vector> #include<algorithm> #include<iostream> using namespace std; using namespace std::placeholders; bool check_size(const string &s, string::size_type sz) { return s.size() >= sz; } /**************************绑定check_size的sz参数***********************************/ int main() { string s("Hello!"); vector<int> nums{1,2,3,5,4,6,3,7}; auto check = bind(check_size, _1, _2); for (auto tt = nums.begin(); tt != nums.end(); tt++) { if (!check(s, *tt)) { cout << *tt; } } }

    转载请注明原文地址: https://ju.6miu.com/read-1294232.html
    最新回复(0)