C ++中数组2维最大大小

时间:2017-12-04 15:09:08

标签: c++11

我想执行大小为array[40000][40000]或更多的3维和2维大型计算程序,这段代码可以解释我的问题,我评论向量,因为它在运行时有同样的问题它转到向量的lib,如何在程序运行时增加编译器的内存或删除(清理)它的某些部分?

#include<iostream>
#include<cstdlib>
#include<vector>
using namespace std;
int main(){
    float array[40000][40000];
    //vector< vector<double> > array(1000,1000);    
    cout<<"bingo"<<endl;
    return 0;
}

1 个答案:

答案 0 :(得分:2)

vector稍好一些选项(并且比矢量矢量 1 好得多),它与vector一样,使用动态分配内容(因此没有溢出堆栈),但没有邀请调整大小:

std::unique_ptr<float[][40000]> array{ new float[40000][40000] };

方便的是,float[40000][40000]仍然出现,这使得即使对于不熟悉不完整数组类型的程序员来说也很明显。

1 vector<vector<T> >非常糟糕,因为它会有许多不同的分配,所有分配都必须单独初始化,并且生成的存储将是不连续的。稍微好一点的是vector<T>vector<T*>的组合,后者将指针创建一行分隔成由前者管理的单个大缓冲区。