1.C++之lambda表达式
我们可以向一个算法传递任何类别的可调用对象。可调用对象有函数,函数指针,其实还有重载了函数调用运算符的类,和lambda表达式。
这里只说lambda表达式。
[capture list](parameter lsit) -> return type { function body}
如:
auto f = [](){return "lambda";};
std::cout<<f()<<std::endl;
有捕获列表
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
void printVec(std::vector<T>& vec)
{
std::for_each(vec.begin(),vec.end(),[](const int& value){ std::cout<<value<<" ";});
}
int main()
{
std::vector<int> numbers{88,12,51,22,98};
std::cout<<"print orige numbers:\n";
printVec(numbers);
std::cout<<std::endl;
//这里sz的值是51
int sz = *(numbers.begin()+2);
//partition算法是把numbers以sz分成两部分
std::partition(numbers.begin(),numbers.end(),[sz](const int& value){return value < sz;});
std::cout<<"print after partition numbers:\n";
printVec(numbers);
std::cout<<std::endl;
return 0;
}
这里对numbers以51分成了两个部分,左边22,12,右边88,98。