在堆栈上C++大型多维数组
C++ large multidimensional-arrays on stack
我的模拟试图预测很长一段时间对系统的需求......输出结果是一个非常大的 4D 数组(我使用 4 维来最大限度地减少将数据写入数组时出错的机会,即我可以通过这种方式更好地理解它!
数组大小将为 25x4x3x20000,我需要它至少是一个(无符号的 int(,但我知道堆栈无法处理这么多数据。
unsigned int ar[25][4][3][2000];
我一直在寻找周围并找到了不同的解决方案。但是,我仍然没有决定实施哪一个。所以我的问题是:哪一个在性能和良好实践方面更好:
- 使用数组向量:如 stackoverflow.com/questions/18991765 中所述...但是关于如何转换 4D 尺寸的任何想法?
std::vector< std::array<int, 5> > vecs; vecs.reserve(N);
- 使用 4D 向量和 push_back((:我没有使用它,因为我知道数组的最终大小,并且我想阻止许多push_backs操作。
- 在堆上创建数组:如中所述 stackoverflow.com/questions/675817
任何其他建议不胜感激!
最大的问题是[2000]
在最终维度上。只要让它充满活力。
让您的 3D 阵列如下:
using arr3d = std::array<std::array<std::array<unsigned int, 25>, 4>, 3>;
然后是第四维的向量:
std::vector<arr3d> ar;
ar.reserve(N); // for optimization
相关文章:
- 在堆栈上C++大型多维数组
- 适用于大型数组的无复制线程安全环形缓冲区
- 为大型数组提供堆大小的编译器
- 快速排序不适用于大型数组
- 如何在C++中创建大型数组(如60亿)?
- 为什么优化大型 std::vector 数组会导致 SegFault?
- Excel 不愉快地显示大型 2D 范围公式数组
- 为什么我的代码无法处理大型数组输入(>10000)?
- 在 C++ 中,用于将大型 2D 数组转换为 1D 数组的内存分配
- 在能够从 Web 浏览器访问大型数组数据的同时存储它的最可行方法是什么?
- 将大型 csv 文件读入数组 c++ 中
- 有效地从文本文件中读取带有字符串索引的大型二维数组(矩阵)
- 将大型二维数组初始化为C++中的所有值
- C/C++ 从 STM32 中的另一个类获取大型数据,如 180 数组
- c++ 从大型数组中读取 3D 坐标并计算它们之间的距离
- 如何在C++中分配大型动态数组
- 在C 中声明具有默认值的大型数组
- C 大型2D数组(在堆上)崩溃了应用程序
- 提高访问大型数组元素的性能
- 如何使用特征库将大型 2D 数组转换为稀疏矩阵