使用for_each和lambda函数从vector <int>中减去一个变量

时间:2016-02-27 08:23:50

标签: c++ lambda

我想从向量的每个元素中减去一个数字,如果用传统的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

如何处理?

2 个答案:

答案 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; });