使用int的向量向量,如何从头到尾打印所有这些
for(row=v.begin();row!=v.end();row++){
for(col=row->begin();col!=row->end();col++){
//cout<<?
}
}
内部循环中应该使用什么来打印每个元素
答案 0 :(得分:1)
就个人而言,我喜欢使用从0
到size()
的简单for循环迭代向量,但这是你用迭代器做的方法:
for(vector< vector<int> >::iterator row = v.begin(); row != v.end(); ++row) {
for(vector<int>::iterator col = row->begin(); col != row->end(); ++col) {
cout << *col;
}
}
请参阅:Iteration over std::vector: unsigned vs signed index variable
答案 1 :(得分:1)
v.begin()
将迭代器返回到序列的开头
v.end()
返回超过序列末尾的元素的迭代器
您可以使用这些迭代器遍历您的结构:
for(auto it_row =v.begin(); it_row!=v.end(); it_row++){
for(auto it_col=it_row->begin();it_col!=it_row->end();it_col++){
cout<<*it_col<<endl;
}
}
为了顺序(获取值)你的迭代器,你需要使用以下语法:*it_col
我使用auto
(C ++ 11)而不是显式放置迭代器类型:
vector<vector<int>>::const_iterator it_row = v.begin()
vector<int>::const_iterator it_col = it_row->begin()
您可以找到有关迭代器here的更多详细信息。
答案 2 :(得分:0)
如果您正在使用c ++ 11,那么您可以使用基于范围的for循环;
for (const auto & items : v)
for (const auto & item : items)
cout << item;