我正在学习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
?
答案 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表达式尝试了上面的代码,似乎做我想做的