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

时间:2013-02-14 03:55:42

标签: c++ arrays vector

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

  array<vector<string>, 2> names;

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

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

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

我无法弄清楚如何调整它来打印数组中每个向量的内容。

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

就像迭代向量一样,你需要遍历数组:

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;
   }
 }

答案 2 :(得分:0)

使用迭代器:

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;
  }
}

答案 3 :(得分:0)

单行解决方案(在这种情况下不一定是优选的,因为在Rapptz的答案中使用for手动迭代更容易阅读,但仍然很高兴知道):

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