如何使用vector.begin()打印向量矢量到vector.end()

时间:2016-02-11 14:55:00

标签: c++ vector iterator

使用int的向量向量,如何从头到尾打印所有这些

for(row=v.begin();row!=v.end();row++){
        for(col=row->begin();col!=row->end();col++){
            //cout<<? 
        }
    }

内部循环中应该使用什么来打印每个元素

3 个答案:

答案 0 :(得分:1)

就个人而言,我喜欢使用从0size()的简单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;