gpt4 book ai didi

C++如何处理for_each循环中使用的lambda表达式的返回值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:37 29 4
gpt4 key购买 nike

我正在学习 lambda 表达式,我想知道如何使用或访问 for_each 循环中使用的 lambda 表达式返回的值。

例如,假设我有以下内容:

vector<string> names;
for_each(names.begin(), names.end(),
[](string aName) -> string {
string newName = aName + "some text";
return newName;
});

如何获取每次调用 lambda 表达式返回的 newName

最佳答案

您可能想要transform,而不是for_each

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

您还可以使用后插入器,这样您就不必预先分配输出 vector 的大小。为了提高效率,最好也将字符串作为 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";
});

如果使用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");
});

关于C++如何处理for_each循环中使用的lambda表达式的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33048543/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com