我正在为二维数组分配内存,我知道深度
int *array[size];
for(int i=0;;i++)
{
array[i]=new int[10];
}
我做得对吗?
答案 0 :(得分:1)
不,您需要for(int i=0; i<size; i++)
,以便循环仅执行size
次。但这并不是最优雅的方式。在C ++中,建议我们使用STL vector
而不是数组来避免内存管理:
vector<vector<int> > array;
请参阅Using arrays or std::vectors in C++, what's the performance gap?
答案 1 :(得分:0)
你想要一个动态的2d数组或指向堆栈堆的指针数组吗?
堆栈上指向堆的指针数组随身携带(如另一张海报所示)。
答案 2 :(得分:0)
你真的不应该以这种方式实现矩阵 - 真的。除非尺寸发生变化,否则请不要。
更好的方法是:
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];
}
};
然后只使用矩阵类访问数据。
我写了一篇关于它的博客文章here