如何在 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;
}