首页 > 解决方案 > 二维向量 for-loop c++

问题描述

这是我的代码

#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::vector;
int main() {

  vector<vector<int>> map{{0, 1, 0, 0, 0, 0},
                          {0, 1, 0, 0, 0, 0},
                          {0, 1, 0, 0, 0, 0},
                          {0, 1, 0, 0, 0, 0},
                          {0, 0, 0, 0, 1, 0}};
  for (int j : map) {
    for (int i :j) {
      cout << i ;
    }
    cout << "\n";
  }
}

上面的代码,int j 中有一个错误:map 但是当我将'int'更改为'auto'时,代码运行良好

我的问题是 2d 矢量(如地图)的正确类型是什么?为什么int不适用于二维向量?

标签: c++for-loopvectortypes

解决方案


你必须像这样使用。因为首先 for 循环搜索在vector<vector<int>>. 所以 j 类型必须是vector<int>第一层。我的英语太糟糕了,很抱歉我试着解释一下。我希望这会有所帮助。

for (vector<int> &j : map) {
    for (int i : j) {
      cout << i ;
    }
    cout << "\n";
  }

推荐阅读