我想从向量的每个元素中减去一个数字,如果用传统的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。
这要怎么处理呢?
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)
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |