C++ 迭代器和多维向量?

C++ 迭代器和多维向量?,c++,C++,因此,我试图构建一个二维向量,它将保存用于从tileset中选择tile的索引 一维迭代器非常简单: std::vector<int> vec; std::vector<int>::iterator vec_it; for(int i=5; i>0; --i){ vec.push_back(i); } //prints "5 4 3 2 1 " for(vec_it = vec.begin(); vec_it != vec.end(); ++vec_it

因此,我试图构建一个二维向量,它将保存用于从tileset中选择tile的索引

一维迭代器非常简单:

std::vector<int> vec;
std::vector<int>::iterator vec_it;

for(int i=5; i>0; --i){
  vec.push_back(i);   }

//prints "5 4 3 2 1 "
for(vec_it = vec.begin(); vec_it != vec.end(); ++vec_it){
  std::cout<<*vec_it<<' ';
}
std::向量向量向量机;
std::vector::迭代器vec_it;
对于(int i=5;i>0;--i){
向量推回(i);}
//打印“54321”
for(vec_it=vec.begin();vec_it!=vec.end();++vec_it){
std::cout
vec_it->begin()
取消引用
vec_it
,为您提供对
向量的引用,然后返回调用
begin()
的结果。您不应该使用
*
(这样做会取消对迭代器的引用,产生迭代器指向的元素,在本例中是
int
;您需要迭代器本身)

您的内部for循环应该如下所示:

for(inner_it = vec_it->begin(); inner_it != vec_it->end(); ++inner_it)

删除“*”,您只需分配迭代器,因此不需要取消迭代器

for(inner_it = vec_it->begin(); inner_it != vec_it->end(); ++inner_it){

嗯,我很欣慰这至少是个简单的错误。谢谢。
for(inner_it = vec_it->begin(); inner_it != vec_it->end(); ++inner_it){