C++打印字符串向量数组的内容

C++ print contents of array of string vectors?

本文关键字:数组 向量 打印 字符串 C++      更新时间:2023-10-16

我不懂C++,但需要对我继承的一些代码进行一些调整。代码的一部分有:

  array<vector<string>, 2> names;

我现在正在尝试打印这个数组中每个向量的内容。我该怎么做?

我知道我可以迭代一个像这样的向量:

  for (unsigned int p=0; p<vector.size(); p++)
      cout << vector.at(p) << endl;

不过,我不知道如何调整它来打印数组中每个向量的内容。

感谢您提供的任何帮助。我在这里不自在。

在C++11中,您可以非常容易地迭代它。

for(auto& i : names) {
    for(auto& k : i) {
        std::cout << k << std::endl;
    }
}

使用迭代器:

array<vector<string>,2> names;
for (array<vector<string>,2>::iterator i=names.begin();i!=names.end();i++)
{
  for (vector<string>::iterator j=i->begin();j!=i->end();j++)
  {
    cout << *j << endl;
  }
}

就像遍历向量一样,您需要遍历数组:

for (int i=0; i<2; i++)
 {
   for (unsigned int p=0; p<names[i].size(); p++)
   {
        cout << names[i].at(p) << endl;
   }
 }

for (auto it = std::begin(names); it != std::end(names); ++it)
 {
   for (unsigned int p=0; p<(*it).size(); p++)
   {
        cout << (*it).at(p) << endl;
   }
 }

一行解决方案(在这种情况下不一定更可取,因为像Raptz的答案中那样手动迭代for更容易阅读,但仍然很好知道):

std::for_each(names.begin(), names.end(), [](vector<string>& v){
              std::copy(v.begin(),v.end(),
                        std::ostream_iterator<string>(std::cout,"n")});