我有一个问题,理解C++中有关数组的一些问题,请随身携带,因为我没有在包含数组的Stackoverflow的其他问题中找到任何对我的问题的答案。2d数组和1d数组存储比较?
如果我有3行4列的数组,并将它们创建为1d数组,并通过每次循环访问每行数据4来访问每行数据。与2d方法相比,这样做是否节省了我的时间,而这需要更多的分配。
,从而代替这种:
int **array = new int * [3];
for(int i = 0; i < 4; i++) {
array[i] = new int [4];
}
我使此:
int *array = new int [3 * 4];
和我访问每一行的数据是这样的:行数= 3,colomns = 4:
for(int i = 0;i < 3; i++) {
for(int j = 0;j < (3 * 4); j++) {
cout << "row : << i << " , 4: " array[i * j];
}
}
1)通过这种方式为我的程序节省了超过2天的时间吗?
2)这是一个坏方法或一个很好的方法扭动我的2D阵列在1D数组像我做了什么?
注:
我的数组不会是动态的,我的数组的大小会知道创建它之前,我会用它在我的神经网络的项目。我的担忧和关注点在于速度。
请原谅我,如果我的问题是愚蠢的,但我之前搜索,并不明白。
在此先感谢。
访问应该是'阵列[colomns * I + J]'(或'数组[行* J + I]')...... – Jarod42
检查我的编辑? @ Jarod42 –
你将有更好的1d数组缓存,但如果在编译时已知大小,你可以直接执行'int array [3] [4];'。 – Jarod42