我需要动态生成这样的3D矩阵:
float vCube[8][3] = {
{1.0f, -1.0f, -1.0f}, {1.0f, -1.0f, 1.0f},
{-1.0f, -1.0f, 1.0f}, {-1.0f, -1.0f, -1.0f},
{1.0f, -1.0f, -1.0f}, {1.0f, 1.0f, 1.0f},
{-1.0f, 1.0f, 1.0f}, {-1.0f, 1.0f, -1.0f}
};
我的意思是,取一个值并将放在矩阵中的运行时间。 我尝试制作一个浮动指针,然后通过 new 添加3D元素,但结果不是我想要的。
请注意,我不想像矢量等那样使用STL,只是一个平面矩阵。
答案 0 :(得分:0)
无论您是否使用vector
,我建议您使用:
struct Elem3D
{
float v[3];
};
然后您可以轻松创建vector
:
vector <Elem3D> cube(8);
或动态分配多个元素
Elem3D *cube = new Elem3D[8];
在不使用struct
或class
的情况下使用二维数组非常快速地在语法和#34;脑力训练&#34;中变得非常混乱。
答案 1 :(得分:0)
您还可以在一维数组中存储3D矩阵
x = height
y = width
z = depth
float VCube[x*y*z]
a_ijk = VCube[i + y * (j + z * k)]
一个有趣的问题是,如果我们想要进行矩阵运算,知道哪个解决方案(这个或Mats Petersson解决方案)可以减少缓存未命中
答案 2 :(得分:0)
要初始化2维数组,首先要定义变量;
float vCube[8][3];
然后创建一个初始化vCube的函数,或者你可以像这样在构造函数中进行初始化。
void function(float a, float b, float c) {
for(int i = 0; i < 8; i++) {
for(int j = 0; j < 3; j +=3) {
vCube[i][j] = a;
vCube[i][j+1] = b;
vCube[i][j+2] = c;
}
}
}