Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化多维数组C++; 在C++中,当我想初始化一个长度为(例如整数)的数组时,我可以写< /p> int* tab; tab = new int[size];_C++_Multidimensional Array_Initialization - Fatal编程技术网

初始化多维数组C++; 在C++中,当我想初始化一个长度为(例如整数)的数组时,我可以写< /p> int* tab; tab = new int[size];

初始化多维数组C++; 在C++中,当我想初始化一个长度为(例如整数)的数组时,我可以写< /p> int* tab; tab = new int[size];,c++,multidimensional-array,initialization,C++,Multidimensional Array,Initialization,在其他地方给出尺寸。但是,对于多维数组,我如何以同样的方式做到这一点呢?我不能只在第二行添加另一个维度,因为编译器不喜欢这样 我想这是个简单的问题。我需要它,因为我正在写一个面向对象编程的赋值,2D数组是类的私有部分,它需要。。。在构造函数中构造(以2个维度作为参数)。如果在数组初始化之前获得高度/宽度参数,则可以尝试: int height = 10; int width = 10; //... int tab[heigth][width]; 如果您能负担得起std::vector而不是

在其他地方给出尺寸。但是,对于多维数组,我如何以同样的方式做到这一点呢?我不能只在第二行添加另一个维度,因为编译器不喜欢这样


我想这是个简单的问题。我需要它,因为我正在写一个面向对象编程的赋值,2D数组是类的私有部分,它需要。。。在构造函数中构造(以2个维度作为参数)。

如果在数组初始化之前获得高度/宽度参数,则可以尝试:

int height = 10;
int width = 10;

//...

int tab[heigth][width];

如果您能负担得起
std::vector
而不是数组,则可以将其用作语法:

std::vector< std::vector<int> > matrix(rows, std::vector<int>(columns));

for (int i=0; i<rows; i++) {
    for (int j=0; j<columns; j++) {
        matrix[i][j] = i+j;
    }
}
std::vectormatrix(行,std::vector(列));

对于(int i=0;i而言,使用
std::vector
是安全的方法:

std::vector<std::vector<int>> mat(size1, std::vector<int>(size2));
别忘了清理资源:

for (std::size_t i = 0; i != size1; ++i) {
    delete [] mat[i];
}
delete[] mat;

请看以下内容:
-1
使用
std::vector
。我听说过vector,但我想知道是否有一种方法可以与一维数组类似……”我听说过vector“因此,您已经听说过C++,现在是时候真正学习它了。您不能将运行时值作为自动数组的维度。这需要非标准扩展:VLA。
for (std::size_t i = 0; i != size1; ++i) {
    delete [] mat[i];
}
delete[] mat;