我正在编写一个程序,它需要使用一个非常原始的(至少,对我来说是新的)整数数组。它应该看起来像: 我的数组[a][b][c][d]
a 从 0 到 N_CORES-1,其中 N_CORES 是正在运行的机器上的 CPU 内核数,由 open-mp 从一开始就定义。
c, d 取 0 到 ARG 之间的值,ARG 是用户传递的行参数
但 b 需要在 0 和一个值之间运行,具体取决于 a(并非每个内核都相同)。
我尝试使用带循环的 new
分配器创建此对象:
for(int i =0;i < N_CORES; i++){
my_array[i] = new int**[size_for_i];
但后来我遇到了段错误。是因为定义这些锯齿状数组的方式不对吗?我应该使用 vector 吗?我从来没有用 vector 做过 4 维的东西,所以我有点迷路了。
编辑:实际上我决定以另一种方式实现它,使用“仅”3d 数组,合并我之前对象的两个第一个索引。非常感谢您的建议!
最佳答案
试试这个:
int ***my_array[N_CORES];
for(int a = 0; a < N_CORES; a++)
{
my_array[a] = new int**[size_for_a];
for( int b = 0; b < size_for_a[a]; b++)
{
my_array[a][b] = new int*[ARG];
for( int c = 0; c < ARG; c++)
{
my_array[a][b][c] = new int[ARG];
}
}
}
关于C++ - 参差不齐的 4d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643245/