我想从向量的每个元素中减去一个数字,如果用传统的C ++编写,它应该是这样的:
vector<int> A; // a vector of size N
int value; // a value to subtracted
for (int i = 0; i < N; i++)
A[i] -= value;
但是现在,我想使用for_each
来使代码更清晰。例如,代码应该是这样的(以下是不正确的):
for_each(A.begin(), A.end(), [](int& x, int v) { x -= v; });
但是lambda函数不能使用变量value
。
如何处理?
答案 0 :(得分:4)
vector<int> A { 10, 20, 30 }; // a vector of size N
int value = 10; // a value to subtracted
两种选择:
for_each(A.begin(), A.end(), [value](auto& x) { x -= value; });
或者
for (auto& x : A)
x -= value;
答案 1 :(得分:0)
将值放在捕获列表中并且编译得很好:
std::for_each(v.begin(), v.end(), [value](int &x) { x -= value; });