7

我正在为我的 C++ 课做家庭作业。

我正在尝试遍历 2d 多维向量。我在大小为7x7的 2d 向量中拥有所有数据,即0-6 by 0-6

问题是我需要按alphaV[0][0], alphaV[1][0], alphaV[2][0],等 的顺序输出二维向量的内容。

当我尝试使用嵌套For循环来处理这个向量时,我遇到了向量的行不会迭代的问题,也就是说它们保持在索引 0 处。

所以它不断重复lphaV[0][0], alphaV[0][0], alphaV[0][0],等等。

我该如何去迭代该模式中的列[0][0], [1][0], [2][0]......?

4

2 回答 2

16

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

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/

于 2013-11-01T02:30:04.073 回答
0

仅用于为 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"; 
        }
    }
}
于 2021-02-25T05:02:11.987 回答