gpt4 book ai didi

c++ - c++中堆上的二维矩阵分配

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:42 24 4
gpt4 key购买 nike

我正在寻找一种在堆上分配二维 (m x n) 矩阵的方法,其中元素在内存中连续。目前我知道有两种方法可以做到这一点:

第一种方法

int* M = new int[m * n];
  • 优点:M 的大小可以动态确定。
  • 缺点:M 的索引有点麻烦。 (M[i * m + j])

第二种方法

typedef int dim[2];
dim* M = new dim[n];
  • 优点:M 的索引正是我想要的。
  • 缺点:第一个维度的大小 (m) 不能动态设置。

问题

有没有办法在堆上动态分配二维矩阵,我可以用 [i][j] 索引元素,内存分配是连续的?

我知道为此使用一个类很有意义,但我正在专门寻找一种如上所述的方法。

最佳答案

你可以试试这个

int** M = new int*[m];
int *M_data = new int[m*n];

for(int i=0; i< m; ++i)
{
M[i] = M_data + i * n;
}

关于c++ - c++中堆上的二维矩阵分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com