C++ 生成动态三维矩阵

C++ 生成动态三维矩阵,c++,dynamic,matrix,C++,Dynamic,Matrix,我需要动态生成一个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} }; 我的意思是,获取一个值并将其放入

我需要动态生成一个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}
};
我的意思是,获取一个值并将其放入运行时间矩阵中。 我尝试将指针指向float,然后通过new添加3D元素,但结果不是我想要的


请注意,我不想使用类似STL的向量等,而只是平面矩阵。

无论您是否使用
向量,我建议您使用:

struct Elem3D
{
   float v[3]; 
};
然后,您可以非常轻松地创建一个
向量

vector <Elem3D> cube(8); 

在不使用
struct
class
的情况下使用二维数组很快就会在语法和“脑损伤”方面变得非常混乱

还可以在一维数组中存储3D矩阵

 x = height
 y = width
 z = depth
 float VCube[x*y*z]
 a_ijk = VCube[i + y * (j + z * k)]

一个有趣的问题是,如果我们想执行矩阵运算来初始化二维数组,首先定义变量,那么知道哪种解决方案(此解决方案或Mats-Peterson解决方案)可以减少缓存未命中

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;
    }
  }
} 
void函数(浮点a、浮点b、浮点c){
对于(int i=0;i<8;i++){
对于(int j=0;j<3;j+=3){
vCube[i][j]=a;
vCube[i][j+1]=b;
vCube[i][j+2]=c;
}
}
} 

为什么不想使用矢量?1)这不是3D矩阵。2) 形成规则是什么?3) 您生成的代码是什么,输出是什么,以及为什么它不符合您的期望?@MatstPeterson您知道哪种方法可以减少缓存未命中?是的,这就是我尝试的方法,问题是我需要给一个指向浮点[j][k]的指针,而从结构进行强制转换是不可能的。
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;
    }
  }
}