如何在 C++ 中声明动态二维数组
How to declare a dynamic 2D array in C++
我正在尝试使用以下定义在 C++ 中定义动态二维数组:
int foo(string parameter){
const int n = parameter.length();
int* Array = new int[n][n];
return 0;
}
我收到一条错误消息,提示新表达式中的数组大小必须为常量,不明白为什么,因为 Array
应该是动态的。
(我写的时候有人在评论里发了一个更短的版本)。
分配给 new
的二维数组需要的是:
int foo(string parameter){
const int n = parameter.length();
int* Array = new int[n*n];
return 0;
}
然后使用适当的索引访问单元格。
另一个解决方案是使用vector
。
int foo(string parameter){
const int n = parameter.length();
vector<vector<int>> Array(n, vector<int>(n));
return 0;
}
我正在尝试使用以下定义在 C++ 中定义动态二维数组:
int foo(string parameter){
const int n = parameter.length();
int* Array = new int[n][n];
return 0;
}
我收到一条错误消息,提示新表达式中的数组大小必须为常量,不明白为什么,因为 Array
应该是动态的。
(我写的时候有人在评论里发了一个更短的版本)。
分配给 new
的二维数组需要的是:
int foo(string parameter){
const int n = parameter.length();
int* Array = new int[n*n];
return 0;
}
然后使用适当的索引访问单元格。
另一个解决方案是使用vector
。
int foo(string parameter){
const int n = parameter.length();
vector<vector<int>> Array(n, vector<int>(n));
return 0;
}