c++ - 输出二维 vector 的语法

标签 c++ vector

假设我有一个 Int 的二维 vector :

vector <vector<Int> > myV;

然后我定义了 2 个变量:

int rows; //number of vectors in myV. This is the my y(vertical) index.
int columns; //number of elements in one vector within myV. x index.

我想知道什么时候像矩形一样输出myV:遍历myV[something][something],哪个变量应该在左括号里,哪个应该在右括号里?我只希望变量完全符合我的意图。

我也写了一个测试代码,但是它有段错误,我还没有弄清楚为什么。

#include <iostream>
#include <vector>

using namespace std;

int main(){
  vector<vector<int> > myV;

  for (int i = 0; i < 3; i++){
      for (int j = 0; j < 3; j++){
          myV[i][j] = j;
  }
for (int i = 0; i < 3; i++){
    for (int j = 0; j < 3; j++)
        cout << myV[i][j] << " ";
    cout << endl;}
}

最佳答案

您的代码无法运行的原因是您没有为 vector 分配任何内存。将 vector 的声明更改为:

vector<vector<int>> myV(3, vector<int>(3));

附带说明一下,我什至会考虑将数组存储在一维中(即 std::vector<int> myV(9); )并使用函数 getIndex 计算索引以供多维使用,可以实现为:

inline std::vector<int>::size_type getIndex(int numCols, int i, int j)
{
    return i * numCols + j;
}

这个函数的用法可能是这样的:

for (int i = 0; i < 3; ++i)
{
    for (int j = 0; j < 3; ++i)
    {
        myV[getIndex(3, i, j)] = /* Value */;
    }
}

这将避免多维 vector 需要大量使用内存,并且允许以几乎相同的方式使用。

这是一些 further reading有关为什么应该使用一维数组表示二维数组的更多信息。

关于c++ - 输出二维 vector 的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48591038/

相关文章:

c++ - 在 C++ 中可以将新声明的映射的地址分配给现有映射的地址吗?

c++ - 将原始 PCM 转换为 FLAC?

c++ - 将 cv::Mat vector 复制到 float vector 的最佳方法是什么?

c++ - 多维 vector 指针

c++ - what():basic_string::_ M_construct null无效

matlab - 如何在 MATLAB 中预测和扩展作为一维向量获取的数据?

c++ - 如何提供单个函数通过基类指针获取任何派生对象的数据?

C++类方法线程

C++ 扩展继承函数

c++ - 访问对象的变量减慢程序 (C++)