[英]Iterating through a 2d Vector row
我正在为我的 C++ 课做家庭作业。
我正在尝试遍历二维多维向量。 我有大小为7x7的二维向量中的所有数据,即0-6 by 0-6
,。
问题是我需要按照alphaV[0][0], alphaV[1][0], alphaV[2][0],
等的顺序输出 2d 向量的内容。
当我尝试使用嵌套For
循环来处理这个向量时,我遇到了向量行不会迭代的问题,也就是说它们保持在索引 0。
所以它不断重复lphaV[0][0], alphaV[0][0], alphaV[0][0],
等。
我该如何迭代该模式中的列[0][0], [1][0], [2][0]
...?
迭代向量,这是遍历容器的标准方法:
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/
仅用于为 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";
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.