繁体   English   中英

初始化多维数组C ++

[英]Initializing multidimensional array C++

在C ++中,当我想初始化一些长度(例如整数)的数组时,我可以写

int* tab;
tab = new int[size];

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

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

使用std::vector是安全的方法:

std::vector<std::vector<int>> mat(size1, std::vector<int>(size2));

如果真的想要自己使用new

int** mat = new int*[size1];
for (std::size_t i = 0; i != size1; ++i) {
    mat[i] = new int[size2];
}

不要忘记清理资源:

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

如果你能买得起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;
    }
}

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

int height = 10;
int width = 10;

//...

int tab[heigth][width];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM