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



取一个 int 的向量,我如何从头到尾打印所有这些

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

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

就个人而言,我喜欢只使用从 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;
    }
}

请参阅:迭代 std::vector:无符号与有符号索引变量

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()

您可以在此处找到有关迭代器的更多详细信息。

如果您使用的是 c++11,则可以使用基于范围的 for 循环;

for (const auto & items : v)
    for (const auto & item : items)
        cout << item;

相关内容