c++ - 如何声明具有特定大小的多维数组?

标签 c++ visual-studio

我最初由数组声明:

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/

相关文章:

c++ - Visual Studio 错误 C2061 : syntax error: identifier

c++ vector将所有元素存储为最后一个元素

.net - 无法加载调试符号 VS2017 - Unity .NET 4.X

.net - 本地工作中的 nuget 包

c++ - 将类似 Makefile 的条件逻辑添加到 visual studio 的构建系统

c++ - LPTSTR 只包含一个字母

c++ - 算法复杂度渐近线图

c++ - Windows是否有自己的 'call other .exe'函数(C++)

.net - 微软自己的开源同行的实现是否更好,为什么?

c++ - BOOST_FOREACH 宏强制方法脱离 Visual Studio 命名空间