话不多说,直接上代码。
代码样例
int main() {
int* a = new int[5];
int** a2d = new int*[5];
for (int i = 0; i < 5;++i) {
a2d[i] = new int[5];
}
a2d[0][0] = 1;
a2d[1][1] = 2;
// 赋值
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5;++x) {
a2d[x][y] = 2;
}
}
// 将二维数组存储为一维数组,其访问、存储的速度都会快一倍。因此作者建议能存储为1维,尽量存储为1维。
int* array = new int[5 * 5];
for (int y = 0; y < 5; ++y) {
for (int x = 0; x < 5;++x) {
array[x + y * 5] = 2;
}
}
// how to delete them
for (int i = 0; i < 5;++i) {
delete[] a2d[i];
}
delete[] a2d;
int*** a3d = new int**[5];
for (int i = 0; i < 5; ++i) {
// 给a3d每个元素赋值一个二维数组
a3d[i] = new int*[5];
for (int j = 0; j < 5; ++j) {
// 将每个二维数组指针提取出来
int** ptr = a3d[i];
//给每个二维数组的元素中赋值一维数组
ptr[j] = new int[50];
}
}
a3d[0][0][0] = 1;
a3d[0][0][1] = 2;
return 0;
}
以上涉及数组的初始化和删除。尤其应该注意的是,如果能存储为一维数组,尽量储存一维,因为当数据量大时访问的存储的速度会快一倍左右。即类似如下这种方式存储:
int* array = new int[5 * 5];
for (int y = 0; y < 5; ++y) {
for (int x = 0; x < 5;++x) {
array[x + y * 5] = 2;
}
}