组合字符串向量

新手上路,请多包涵

我一直在阅读 Accelerated C++ ,我不得不说这是一本有趣的书。

在第 6 章中,我必须使用 中的函数将 vector 连接成单个字符串。我可以使用累积,但它没有帮助,因为字符串容器只能 push_back 字符。

 int main () {
  using namespace std;
  string str = "Hello, world!";
  vector<string>  vec (10, str);
  // Concatenate here?

  return 0;
}

如何将字符串连接在一起?

原文由 Bogdan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 479
2 个回答

假设这是问题 6.8,它并没有说你必须使用累积 - 它说使用“库算法”。但是,您可以使用累积:

 #include <numeric>

int main () {
    std::string str = "Hello World!";
    std::vector<std::string> vec(10,str);
    std::string a = std::accumulate(vec.begin(), vec.end(), std::string(""));
    std::cout << a << std::endl;
}

累积所做的只是将“sum”设置为第三个参数,然后对于从第一个参数到第二个参数的所有值“val”,执行以下操作:

 sum = sum + val

然后它返回“总和”。尽管在 <numeric> 中声明了累积,但它适用于任何实现 operator+()


注意这个解决方案虽然优雅,但效率低下,因为将为 vec 的每个元素分配和填充一个新字符串。

原文由 anon 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不确定你的问题。问题出在哪里?它只是一个循环的问题。

 #include<vector>
#include<string>
#include<iostream>

int main ()
{
    std::string str = "Hello World!";
    std::vector<string>  vec (10,str);

    for(size_t i=0;i!=vec.size();++i)
        str=str+vec[i];
    std::cout<<str;
}

编辑 :

使用 for_each() 来自 <algorithm>

尝试这个:

 #include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
string i;
void func(string &k)
{
  i+=k;
}
int main () {
    string str = "Hello World!";
    vector<string>  vec (10,str);

    for_each(vec.begin(),vec.end(),func);
    cout<<i;
    return 0;
  }

原文由 Prasoon Saurav 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题