正在看C++ primer 5,学习的同时,记录下学习体会。
(v表示容器)
实现在v中统计符合第三个参数条件的数量。有三种方法:
bool cmpstr(const string &s)
{
return s.size() >=5;
}
1: 接受一个一元谓词。
auto count = count_if(v.begin(),v.end(),cmpstr);
2:接受一个lambda表达式。形如:[capture list] (parameter list) ->type { function body};//当函数体只有一个return 语句,可以省略类型
auto count = count_if(v.being(), v.end(), [sz] (const string &s ) { return s.size()>=5; } );
3:传递一个bind()函数//bind(obj,_1,_2....) 接受一个可调用对象,其他参数分别为该可调用对象的对应参数并返回一个可调用对象
如 auto f = bind(a, b, c, _2 , _1);
调用f(x,y)即 bind(a, b, c, y, x);
auto count = count_if(v.being(), v.end(), bind(cmpstr,_1));