2013-02-14 88 views
0

我不知道C++,但需要對我繼承的一些代碼進行一些調整。代碼的一部分有:C++打印字符串向量數組的內容?

array<vector<string>, 2> names; 

我現在試圖打印這個數組中的每個向量的內容。我該如何去做呢?

我知道我可以遍歷一個向量是這樣的:

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

我無法弄清楚如何調整這個打印每個向量的內容數組中雖然。

感謝您提供任何幫助。我不在這裏。

+0

是什麼陣列這裏? – user258367 2013-02-14 03:59:12

回答

2

在C++ 11你可以遍歷通過這個很容易。

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

適用於現代C++ – jschroedl 2013-02-14 04:24:24

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

一號線的解決方案(在這種情況下,不一定可取,因爲手動for在Rapptz的回答迭代爲更容易閱讀,但還是很高興知道):

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