For_each将string对象连接到vector对象中的所有string对象

for_each to concatenate string, to all strings within a vector

本文关键字:string 对象 vector each 对象连接 For      更新时间:2023-10-16

我正在学习c++,所以很自然地,我一直在闲逛,试图弄清楚我能做什么,不能做什么。我写了一小段代码来处理lambdas和字符串,但它似乎给了我一些问题:

我有两个字符串存储在向量中,一个是巧克力,另一个是香草。我想把软糖连到最后。我在声明相关的库。一切都编译并运行。但没有任何关联。任何帮助都将不胜感激。提前感谢。

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

From reference:

std::for_each

将给定的函数对象f应用于解引用的结果在[first, last)范围内的每个迭代器,按顺序。如果InputIt是a可变迭代器,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"; 
           });