.数组 in C++
放堆上的二维数组的创建
int main() {
int **array = new int*[5];
for (int i = 0; i < 5; i < 5; ++i) {
arrray[i] = new int[5];
}
int ***a3 = new int**[5];
for (int i = 0; i < 5; ++i) {
a3[i] = new int*[5];
for (int j = 0; j < 5; ++j) {
a3[i][j] = new int[5]
}
}
}
在这个例子中堆上创建只是分配了内存空间,但是没有往里面放具体的数据!(如果有初始化,则就会同步放数据)
根据上面的第一个例子的分配25个整数,因为是在堆上分配,所以内存上不是连续的,分配时间会远大于在栈上之间建立array[25]的时间(所以分配一阶的数组会更快)
💡故其实上面的可以这样写
int main() {
int *array = new int(25);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
array[i + j * 5] = 1;
}
}
}
💡所以从理论上,是可以不用二维数组的(当然用了可读性会好一点)(Cherno的个人习惯就是不常使用二维数组)
所以为了速度,可以尽量避免使用二维数组