mup*_*pet 1 c++ heap vector multidimensional-array c++11
我有一个需要在堆上分配的2d向量,并使用下面的代码行来声明和调整它.
vector<vector<double>> *myArray = new vector<vector<double>>(x, vector<double>(y));
其中x和y是分别为行数和列数.
当我尝试使用向量访问向量的元素时myArray[0][0] = 3.0;,我得到以下错误,
错误:没有可行的重载'='
myArray [0] [0] = 3.0;
我很感激任何帮助来解决这个问题.
笔记:
行和列的数量需要是动态的,因此myArray在堆上.
数组需要可调整大小,这就是我使用std :: vector的原因.
我知道我可以创建一个向量向量(行数),然后在for循环中将每个行元素调整大小为所需的列数.我不明白的是为什么上面的代码不起作用,因为据我所知它应该执行相同的功能.
由于一些奇怪的无效原因,您正在使用指向矢量的指针.既然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)