使用operator []无法访问2d堆向量的元素

mup*_*pet 1 c++ heap vector multidimensional-array c++11

我有一个需要在堆上分配的2d向量,并使用下面的代码行来声明和调整它.

vector<vector<double>> *myArray = new vector<vector<double>>(x, vector<double>(y));

其中xy是分别为行数和列数.

当我尝试使用向量访问向量的元素时myArray[0][0] = 3.0;,我得到以下错误,

错误:没有可行的重载'='

myArray [0] [0] = 3.0;

我很感激任何帮助来解决这个问题.

笔记:

  1. 行和列的数量需要是动态的,因此myArray在堆上.

  2. 数组需要可调整大小,这就是我使用std :: vector的原因.

  3. 我知道我可以创建一个向量向量(行数),然后在for循环中将每个行元素调整大小为所需的列数.我不明白的是为什么上面的代码不起作用,因为据我所知它应该执行相同的功能.

jua*_*nza 5

由于一些奇怪的无效原因,您正在使用指向矢量的指针.既然operator[]可以使用指针,那么就可以了

myArray[0][0] = 3.0;
Run Code Online (Sandbox Code Playgroud)

你实际上是在访问一个vector<double>,而不是一个double,因为myArray[0]你得到了一个vector<vector<double>>.

显而易见的解决方法是不首先使用指针:

vector<vector<double>> myArray(x, vector<double>(y));
Run Code Online (Sandbox Code Playgroud)