我将内存分配给二维数组,我知道它的深度
int *array[size];
for(int i=0;;i++)
{
array[i]=new int[10];
}
我做对了吗?
不,您需要for(int i=0; i<size; i++)
让循环只执行size
时间。但这不是最优雅的方法。在 C++ 中,建议我们使用 STLvector
代替数组来避免内存管理:
vector<vector<int> > array;
你真的不应该以这种方式实现矩阵——真的。除非尺寸改变,否则请不要。
更好的方法是:
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];
}
};
然后只需使用矩阵类访问数据。
我在这里写了一篇博文