我最初由数组声明:
constexpr auto array_size = 50000000;
double M[array_size][2][20]= { };
但是,它会在运行时崩溃。
我打算使用 vector :
我找到了一个二维数组的例子:
std::vector<std::vector<int>> array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
但是,我不知道如何为每个维度分配 vector 大小(例如:50000000)。
也许通过'new'会更容易,但我不知道如何声明它。
谢谢。
最佳答案
std::vector
是一个运行时数组类。
std::array
是一个编译时数组类。
我只能假设它崩溃了,因为 50000000 是为单个对象分配的大量 ram,我只能假设你这样做了好几次。
调整 std::vector
的大小, 使用 resize( uNewSize )
像这样的函数成员:
std::vector< int > vecIntegers { 1, 2, 3 }; // size is 3.
vecIntegers.resize( 4 );
vecIntegers[ 3 ] = 4;
for ( auto integer: vecIntegers )
std::cout << integer << ' ';
这个程序会打印1 2 3 4
.
std::vector
的多维数组是通过像在您的问题中一样嵌套它们来完成的:
std::vector<std::vector<std::vector<int>>> vec3d;
关于c++ - 如何声明具有特定大小的多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56233003/