C :创建1-D数组,其中包含来自3-D数组的元素
C++ : Creating 1-d array which contains the elements from 3-d array
我正在尝试创建包含来自3维数组的元素
的1维数组例如:
float array[4][3][6];
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 6; k++) {
temp[4] = {array[0][j][k],array[1][j][k],array[2][j][k],array[3][j][k]};
}
}
但是,当我编译代码时,它返回了一个错误,如下4: error: expected primary-expression before ‘{’ token
和error: expected
;'在'{'token`
有人知道这里出了什么问题吗?
此方法以前有效,但我真的很想知道现在发生的事情。
谢谢。
// create 1d array with 3d property's
float array[width * height * depth];
// get and set functions
float get(int x,int y,int z)
{
return array[x + (y * width)+ (z * width * height)];
}
void set(float value,int x,int y,int z)
{
array[x + (y * width)+ (z * width * height)] = value;
}
//iterate over the array
for(int z = 0; z < depth; ++z)
for(int y = 0; y < height; ++y)
for(int x = 0; x < width ; ++x)
get(x,y,z);
{}
只能在编译时间初始化,需要保持恒定。
您需要使用float temp[4];
然后在循环中:
temp[0] = array[0][j][k]
temp[1] = array[1][j][k]
temp[2] = array[2][j][k]
temp[3] = array[3][j][k]
这将使您的代码编译,但您知道最终,您的3-D阵列中只有4个组成部分,这些组件将是
array[0][2][5],array[1][2][5],array[2][2][5],array[3][2][5]
除非您没有显示所有代码,否则您不妨跳过2个循环并直接影响它们。
我认为您可以使用类似的东西:
float array[4][3][6];
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 6; k++) {
for (int i=0; i < 4; i++ )
temp[i] = array[i][j][k];
}
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '