将每个字符串连接到向量中的所有字符串 我正在学习C++,所以我一直在瞎搞,想弄明白我能做什么,做不到。我写了一小段代码来处理lambda和字符串,但它似乎给了我一些问题:S
向量中有两个字符串,一个是巧克力,另一个是香草。我想把福吉连在一起。我正在声明关联的库。一切都在编译和运行。但是没有任何东西可以连接:如果有任何帮助,我们将不胜感激。提前谢谢将每个字符串连接到向量中的所有字符串 我正在学习C++,所以我一直在瞎搞,想弄明白我能做什么,做不到。我写了一小段代码来处理lambda和字符串,但它似乎给了我一些问题:S,c++,c++11,C++,C++11,向量中有两个字符串,一个是巧克力,另一个是香草。我想把福吉连在一起。我正在声明关联的库。一切都在编译和运行。但是没有任何东西可以连接:如果有任何帮助,我们将不胜感激。提前谢谢 void main() { vector<string> ramzy; ramzy.push_back("chocolate"); ramzy.push_back("vanilla"); for_each(ramzy.begin(),ramzy.end(),
void main()
{
vector<string> ramzy;
ramzy.push_back("chocolate");
ramzy.push_back("vanilla");
for_each(ramzy.begin(),ramzy.end(),
[](string word)->string{
string i = word + " fudge";
return (i);
} );
cout << ramzy[0] << endl << ramzy[1] << endl;
}
所需输出如下所示:
chocolate
vanilla
Chocolate Fudge
Vanilla Fudge
发件人:
将给定的函数对象f
应用于解引用的结果
范围[第一个,最后一个)
中的每个迭代器,按顺序。如果输入是
可变迭代器,f
可以通过
取消引用的迭代器
如果f返回一个结果,则忽略该结果
因此,您必须将lambda更改为:
[](string& word)
{
word += " fudge";
}
根据您的需要使用transform,而不是for_each
std::transform(ramzy.begin(),ramzy.end(),ramzy.begin(),[](const std::string& str)
{
return str + " fudge";
});
它不需要每次重新布线都使用。我想我需要重新学习我的lambda:S,但谢谢你的帮助。@Ramzicle“我想我需要重新学习我的lambda”-不,只是标准算法如何工作,与lambda无关。我更喜欢
std::transform
到std::for_each
,但最好不要在lambda中使用const std::string&
。
std::transform(ramzy.begin(),ramzy.end(),ramzy.begin(),[](const std::string& str)
{
return str + " fudge";
});