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

时间:2015-10-09 23:28:14

标签: 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;
});

如何通过每次调用lambda表达式返回newName

2 个答案:

答案 0 :(得分:2)

虽然transform非常合适,但我认为值得一提的是,你可以用更强制性/更少声明性的方式来使用for_each。如果您在学习C ++时尝试快速编写解决小问题的解决方案,那么学习这样做可以减少对应用程序级编程“流程”的干扰,而不是在<algorithm>文档中进行挖掘。数据处理逻辑是更重要的技能。

vector<string> names;
vector<string> results;
results.reserve(names.size());
for_each(names.begin(), names.end(),
    [](const string& name) {
        results.push_back(name + "some text");
    });

答案 1 :(得分:-1)

vector<pair<int,string>> vecpair;
vecpair.push_back(make_pair(1000,  "abc"));
vecpair.push_back(make_pair(1298,  "def"));


std::for_each(vecpair.begin(), vecpair.end(), 
    [&](pair<int,string>item){ sumStr+= " "+ item.second ; }    );

我用delta表达式尝试了上面的代码,似乎做我想做的