use*_*622 1 c++ foreach lambda
我正在学习lambda表达式,我想知道如何使用或访问for_each循环中使用的lambda表达式返回的值.
例如,假设我有以下内容:
vector<string> names;
for_each(names.begin(), names.end(),
[](string aName) -> string {
string newName = aName + "some text";
return newName;
});
Run Code Online (Sandbox Code Playgroud)
如何newName通过每次调用lambda表达式返回?
而不是for_each,你可能想要transform.
vector<string> names;
vector<string> output(names.size());
transform(names.begin(), names.end(), output.begin(),
[](string aName) -> string {
string newName = aName + "some text";
return newName;
});
Run Code Online (Sandbox Code Playgroud)
您也可以使用后插入器,这样就不必预先分配输出向量的大小.为了提高效率,将字符串作为const传递也可能更好:
std::vector<std::string> names;
std::vector<std::string> output;
output.reserve(names.size());
std::transform(names.begin(), names.end(), std::back_inserter(output),
[](const std::string& aName) -> std::string {
return aName + "some text";
});
Run Code Online (Sandbox Code Playgroud)
如果使用for_each,则需要通过引用捕获输出容器:
std::vector<std::string> names;
std::vector<std::string> output;
output.reserve(names.size());
std::for_each(names.begin(), names.end(),
[&output](const std::string& aName) {
output.push_back(aName + "some text");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |