【发布时间】:2021-12-12 14:22:32
【问题描述】:
我对这样的 lambda 表达式有疑问:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int sum(vector<int>& v){
int total = 0;
auto lambda = for_each(v.begin(), v.end(), [&total](int n){total += n;});
lambda; // lambda expression doesn't work.
for_each(v.begin(), v.end(), [&total](int n){total += n;}); // work same as I intended.
return total;
}
int main(void){
vector<int> v = {1, 2, 3, 4, 5};
cout << sum(v) << endl; // 30 (I think this should be 45.)
}
我认为lambda; 可以做与for_each 算法相同的事情。为什么lambda; 不起作用?
【问题讨论】:
-
lamda;不调用 lambda 函数。根据thestd::for_eachdocumentation,它返回您传递的函数,而不是执行std::for_each的对象。 -
您可能还应该了解
std::accumulate函数。 -
您的
lambda不是 lambda。