我的模拟尝试预测长时间的系统需求...输出结果导致非常大的4D数组(我使用4维来最大程度地减少将数据写入数据时的错误机会数组,即我可以通过这种方式更好地理解它!)。
数组大小将为25x4x3x20000,我需要至少为一个(无符号整数),但我知道堆栈无法处理此数据量。
unsigned int ar[25][4][3][2000];
我一直在四处寻找不同的解决方案。但是,我仍然不确定要执行哪一个。所以我的问题是:在性能和良好实践方面哪个更好:
std::vector< std::array<int, 5> > vecs; vecs.reserve(N);
任何其他建议,我们都会感激!
答案 0 :(得分:1)
最大的问题是最终维度中的[2000]
。只需使其动态。
具有这样的3D阵列:
using arr3d = std::array<std::array<std::array<unsigned int, 25>, 4>, 3>;
,然后是第四维的向量:
std::vector<arr3d> ar;
ar.reserve(N); // for optimization