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

C. *_*ang 1 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;
Run Code Online (Sandbox Code Playgroud)

但是现在,我想用它for_each来使代码更清晰。例如,代码应该是这样的(以下是不正确的):

for_each(A.begin(), A.end(), [](int& x, int v) { x -= v; });
Run Code Online (Sandbox Code Playgroud)

但 lambda 函数不能使用变量value

这要怎么处理呢?

Jts*_*Jts 5

vector<int> A { 10, 20, 30 }; // a vector of size N
int value = 10; // a value to subtracted
Run Code Online (Sandbox Code Playgroud)

两种选择:

for_each(A.begin(), A.end(), [value](auto& x) { x -= value; });
Run Code Online (Sandbox Code Playgroud)

或者

for (auto& x : A)
    x -= value;
Run Code Online (Sandbox Code Playgroud)