C++ 将内存分配给二维阵列

C++ 将内存分配给二维阵列,c++,arrays,memory,dynamic,C++,Arrays,Memory,Dynamic,我将内存分配给二维阵列,我知道其深度 int *array[size]; for(int i=0;;i++) { array[i]=new int[10]; } 我做得对吗?不,您需要for(int I=0;I您想要一个动态2d数组还是指向堆栈上堆的指针数组 指向堆栈上堆的指针数组按原样进行(如另一张海报所示) 对于动态2d数组。您真的不应该以这种方式实现矩阵——真的。除非维度发生变化,否则请不要这样做 更好的方法是: template<typename Ty> class

我将内存分配给二维阵列,我知道其深度

int *array[size];
for(int i=0;;i++)
{
   array[i]=new int[10];
}

我做得对吗?

不,您需要
for(int I=0;I您想要一个动态2d数组还是指向堆栈上堆的指针数组

指向堆栈上堆的指针数组按原样进行(如另一张海报所示)


对于动态2d数组。

您真的不应该以这种方式实现矩阵——真的。除非维度发生变化,否则请不要这样做

更好的方法是:

template<typename Ty>
class  matrix {
public:
  const unsigned dim_x, dim_y;

private:
  Ty* const data;

public:
  matrix(const unsigned dim_x, const unsigned  dim_y) 
    : dim_x(dim_x), dim_y(dim_y), data(new Ty[dim_x *dim_y])
  {}

  ~matrix() {
    delete[] data;
  }

  const Ty at(unsigned i, unsigned j) const {
    return data[i + j*dim_x];
  }

  Ty& at(unsigned i, unsigned j) {
    return data[i + j*dim_x];
  }
};
模板
类矩阵{
公众:
常数无符号尺寸x,尺寸y;
私人:
Ty*常数数据;
公众:
矩阵(常数无符号维数x,常数无符号维数y)
:dim_x(dim_x)、dim_y(dim_y)、数据(新的Ty[dim_x*dim_y])
{}
~matrix(){
删除[]数据;
}
常数(无符号i,无符号j)常数{
返回数据[i+j*dim_x];
}
Ty&at(无符号i,无符号j){
返回数据[i+j*dim_x];
}
};
然后使用matrix类访问数据


我写了一篇博客文章,关于它

@ Us1838070,嗯,你应该考虑切换到一些可以管理内存的东西,比如“代码> STD::向量< /代码>。为什么不把它包在一个有<代码>的对象上,就像一个向量一样?这样你就不必在你的代码中都有矩阵ARITMETICK了。
template<typename Ty>
class  matrix {
public:
  const unsigned dim_x, dim_y;

private:
  Ty* const data;

public:
  matrix(const unsigned dim_x, const unsigned  dim_y) 
    : dim_x(dim_x), dim_y(dim_y), data(new Ty[dim_x *dim_y])
  {}

  ~matrix() {
    delete[] data;
  }

  const Ty at(unsigned i, unsigned j) const {
    return data[i + j*dim_x];
  }

  Ty& at(unsigned i, unsigned j) {
    return data[i + j*dim_x];
  }
};