遍历二维向量的行

8
我正在为我的C++课程做作业。
我正在尝试遍历一个二维向量,这个向量的大小是7x7,即0-6 by 0-6
问题是我需要按照alphaV[0][0], alphaV[1][0], alphaV[2][0]的顺序输出这个二维向量中的内容。
当我尝试使用嵌套的for循环处理这个向量时,我遇到了问题,即向量的行不能迭代,也就是说它们保持在索引0处。
所以它一直重复着alphaV[0][0], alphaV[0][0], alphaV[0][0]等等。
如何按照[0][0], [1][0], [2][0]的模式遍历列?

2
你能展示一下你目前的代码吗?嵌套的for循环应该可以很好地解决问题。 - Retired Ninja
我现在没有代码,但大致是这样的:for(i=0; i<e, i++) //e代表数组大小,在这个例子中是一个由7个元素组成的数组 { cout<<alphaV[i][0]; } 当我使用上述代码时,我得到的答案都是相同的,即alphaV[0][0] alphaV[0][0],而不是我期望的alphaV[0][0]、alphaV[0][1]、alphaV[0][2]等。有趣的是,当我将其更改为alphaV[0][i]时,我确实得到了预期的结果,即alphaV[0][0]、alphaV[0][1]、alphaV[0][2]等。 - user2943507
请编辑问题以包含代码,而不要将其添加到评论中。如果您现在没有代码,请在有时再发布它,因为查看您正在使用的实际代码非常重要。 - Retired Ninja
2个回答

17

遍历向量,这是遍历容器的标准方式:

void printVector(const std::vector< std::vector<int> > & vec)
{ 

    std::vector< std::vector<int> >::const_iterator row; 
    std::vector<int>::const_iterator col; 

    for (row = vec.begin(); row != vec.end(); ++row)
    { 
         for (col = row->begin(); col != row->end(); ++col)
         { 
            std::cout << *col; 
         } 
    } 

} 

关于迭代器的更多信息可以在这里找到:http://www.cplusplus.com/reference/iterator/


1

仅为完整示例,以便AngelCastillo的回答

#include <iostream>
#include <vector> 

using namespace std; //to stop using std every time

int main(){
    vector<int> vts;
    vector<vector<int>> vec; //multidimensional vector
    
//simple vector iteration
    vts.push_back(10);
    for(vector<int>::iterator itv = vts.begin();itv != vts.end(); ++itv ){
        cout << *itv << "\n";
    }

//how to add multidimensional objects
    vector<int> tmp;
    tmp.push_back(20);
    vec.push_back(tmp);
    
    vector<vector<int>>::const_iterator row; 
    vector<int>::const_iterator col; 

    for (row = vec.begin(); row != vec.end(); ++row)
    { 
         for (col = row->begin(); col != row->end(); ++col)
         { 
            cout << *col << "\n"; 
         } 
    } 
    
//same iteration another way
    for(vector<vector<int>>::iterator row = vec.begin();row != vec.end(); ++row ){
        for(vector<int>::iterator col = row->begin();col != row->end(); ++col ){
            cout << *col << "\n"; 
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接