【发布时间】:2011-12-02 20:07:19
【问题描述】:
我正在寻找一种在内存中连续元素在堆上分配 2D (m x n) 矩阵的方法。目前我知道有两种方法可以做到这一点:
第一种方法
int* M = new int[m * n];
- 亲:
M的大小可以动态确定。 - Con:
M的索引有点麻烦。 (M[i * m + j])
第二种方法
typedef int dim[2];
dim* M = new dim[n];
- 专业人士:
M的索引正是我想要的。 - Con:无法动态设置第一个维度 (m) 的大小。
问题
有没有办法在堆上动态分配一个二维矩阵,我可以用[i][j] 索引元素并且内存分配是连续的?
我知道为此使用一个类会很有意义,但我正在专门寻找一种如上所述的方法。
【问题讨论】:
-
当然,只需编写一个自定义
IntArray2D类,并使用适当的operator[]返回一个重载operator[]本身的代理。 -
您好 Woltan,我将始终使用您提到的第一种方法。使用索引可能看起来更尴尬。但这是你很快就会使用的东西。避免在第二种方法中使用指针的痛苦并保持简单。
标签: c++ matrix memory-management heap-memory