【问题标题】:2d vector for-loop c++二维向量 for-loop c++
【发布时间】:2019-12-22 04:13:09
【问题描述】:

这是我的代码

#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 不适用于 2d 矢量?

【问题讨论】:

  • 你认为map的包含类型是什么?是整数吗?如果不是,是否可以转换为 int?

标签: c++ for-loop vector types


【解决方案1】:

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

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

【讨论】:

  • 虽然这会编译,但效率不高,因为您要复制每个内部向量。将j 设为参考。
猜你喜欢
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2019-09-23
相关资源
最近更新 更多