C++ 二维阵列的初始化

C++ 二维阵列的初始化,c++,multidimensional-array,C++,Multidimensional Array,上面的代码用于在subsetSum中生成2d布尔类型数组,但编译器说“n”和“sum”都必须是常量。如何在我的函数中创建一个2D数组,就像普通的堆栈变量,比如“double”和“int”?声明一个数组,就像你在发布的数组不是标准C++。用于声明数组的大小必须在编译时已知。因此,编译器将此报告为错误。一些编译支持可变长度数组(VLAS)作为扩展,但它们不是标准的C++。 对于这样的动态数组,请使用std::vector bool subsetSum(int arr[], const int &am

上面的代码用于在subsetSum中生成2d布尔类型数组,但编译器说“n”和“sum”都必须是常量。如何在我的函数中创建一个2D数组,就像普通的堆栈变量,比如“double”和“int”?

声明一个数组,就像你在发布的数组不是标准C++。用于声明数组的大小必须在编译时已知。因此,编译器将此报告为错误。一些编译支持可变长度数组(VLAS)作为扩展,但它们不是标准的C++。 对于这样的动态数组,请使用
std::vector

bool subsetSum(int arr[], const int &n, const int &sum)
{
    bool T[n + 1][sum + 1];
}
std::vector T(n+1,std::vector(sum+1));

需要从用户代码中处理动态内存分配和解除分配。

声明一个数组就像你在发布的不是标准C++。用于声明数组的大小必须在编译时已知。因此,编译器将此报告为错误。一些编译支持可变长度数组(VLAS)作为扩展,但它们不是标准的C++。 对于这样的动态数组,请使用

std::vector

bool subsetSum(int arr[], const int &n, const int &sum)
{
    bool T[n + 1][sum + 1];
}
std::vector T(n+1,std::vector(sum+1));

它消除了用户代码处理动态内存分配和释放的需要。

是否可能不使用指针?您所说的“double”和“int”等普通堆栈变量到底是什么意思?您的意思是不需要指针?我的意思是不使用指针pointers@ApolloYes,因为代码可以在其他编译器中编译,但不能在我的编译器中编译@有可能不使用指针吗?你说的像普通堆栈变量“double”和“int”是什么意思?你的意思是不需要指针?我的意思是不使用pointers@ApolloYes,因为代码可以在其他编译器中编译,但不能在我的编译器中编译@阿波罗