STL算法的函数有时候需要传递函数,可以传递函数指针,函数对象(函数符)、lambda表达式。
计算vector数组中能被3和13整除数的个数。
传入普通函数
函数对象:()操作符重载可以当成一个函数使用,但是不如lambda函数好用。
lamda函数:
[ ]替代了函数名,没有声明函数类型,如果函数只有一行,自动推导类型,否则指出类型。
为什么使用lambda?
函数位于调用的地方近,便于查看和修改,很方便。
效率上,lambbda函数可以自动优化为内联函数,但是使用函数指针不会优化为内联函数。
功能上,[&变量]可以应用变量,[&]可以引用所有动态变量,[=]可以按值引用所有动态变量。