C++ 的 lambda 为什么还要允许有参数呢,不是可以捕获外部的变量吗,要参数做什么用呢
2个回答
2016-06-12
展开全部
参数不一定是创建lambda的地方就能得到的, 参数的值可以由接收lambda的那个函数来提供, 自己实际用一下就知道参数有什么用了
例如用for遍历数组写成lambda的形式差不多就是array.foreach([](value){ /*在这里得到数组每个元素的值*/ })
又例如用lambda当作event handler, 接收一个鼠标点击的事件的lambda可以是[](x, y){/*在这里得到鼠标的指针坐标*/}
例如用for遍历数组写成lambda的形式差不多就是array.foreach([](value){ /*在这里得到数组每个元素的值*/ })
又例如用lambda当作event handler, 接收一个鼠标点击的事件的lambda可以是[](x, y){/*在这里得到鼠标的指针坐标*/}
追问
比如
const list::const_iterator result =
find_if(numbers.begin(), numbers.end(),[](int n) { return (n % 2) == 0; });
这里 find_if 函数调用的最后一个参数是一个 lambda,而这个 lambda 的参数“int n”是从哪里来的呢
追答
就是find_if函数给提供的呀, find_if里的循环会把每个元素都丢给n调用这个lambda多次
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询