C++ 中的 3d 全局数组
3d Global array in C++
我正在尝试创建一个全局数组,它的大小来自命令行参数。截至目前,我的代码如下所示:
int*** Matrix;
后来,在一个函数中,我这样做了:
Matrix = new int**[2];
Matrix[0] = new int*[gridSize];
Matrix[1] = new int*[gridSize];
for (int i = 0; i<gridSize; ++i){
Matrix[0][i], Matrix[1][i] = new int[gridSize];
}
当我尝试为数组中的条目赋值时,这引发了分段错误。我能做些什么来解决这个问题? gridSize 是从命令行读入的整数。
在c++
中,您可以利用STL
的优势
#include <vector>
using Array1D = std::vector<int>;
using Array2D = std::vector<Array1D>;
using Array3D = std::vector<Array2D>;
void resizeArray3D(Array3D &array3D, size_t size) {
array3D = Array3D(size, Array2D(size, Array1D(size)));
}
请注意,此版本的调整大小将清除所有以前的数据。
我正在尝试创建一个全局数组,它的大小来自命令行参数。截至目前,我的代码如下所示:
int*** Matrix;
后来,在一个函数中,我这样做了:
Matrix = new int**[2];
Matrix[0] = new int*[gridSize];
Matrix[1] = new int*[gridSize];
for (int i = 0; i<gridSize; ++i){
Matrix[0][i], Matrix[1][i] = new int[gridSize];
}
当我尝试为数组中的条目赋值时,这引发了分段错误。我能做些什么来解决这个问题? gridSize 是从命令行读入的整数。
在c++
中,您可以利用STL
#include <vector>
using Array1D = std::vector<int>;
using Array2D = std::vector<Array1D>;
using Array3D = std::vector<Array2D>;
void resizeArray3D(Array3D &array3D, size_t size) {
array3D = Array3D(size, Array2D(size, Array1D(size)));
}
请注意,此版本的调整大小将清除所有以前的数据。