如何在 C++ 中动态分配二维矩阵?我根据我已经知道的进行了尝试:
#include <iostream>
int main(){
int rows;
int cols;
int * arr;
arr = new int[rows][cols];
}
它适用于一个参数,但现在适用于两个。我应该怎么办?
原文由 chustar 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我知道在 C++ 中分配动态二维数组的最清晰直观的方法。此示例中的模板化涵盖了所有情况。
template<typename T> T** matrixAllocate(int rows, int cols, T **M)
{
M = new T*[rows];
for (int i = 0; i < rows; i++){
M[i] = new T[cols];
}
return M;
}
...
int main()
{
...
int** M1 = matrixAllocate<int>(rows, cols, M1);
double** M2 = matrixAllocate(rows, cols, M2);
...
}
原文由 KeyC0de 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
矩阵实际上可以表示为数组的数组。
当然,要删除矩阵,您应该执行以下操作:
我刚刚想出了另一种可能性:
释放这个数组更容易:
该解决方案的优点是为所有元素分配一个大块内存,而不是几个小块。不过,我发布的第一个解决方案是 数组 概念数组的更好示例。