我想在3和2中执行大型计算程序,大小为 array[40000][40000]
或更多,此代码可以解释我的问题,我会评论矢量,因为当我运行时它也有相同的问题它是向vector的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;
}
与 vector
的选项要好得多(并且比vector的vector 1 ),像 vector
一样,使用动态分配(因此)不会溢出堆栈),但不会邀请调整大小:
std::unique_ptr<float[][40000]> array{ new float[40000][40000] };
方便地,float[40000][40000]
仍然出现,使得在不熟悉不完整数组类型的程序员的情况下,这里发生了什么。
1 vector<vector<T> >
非常糟糕,因为它将具有许多不同的分配,所有分配都必须单独初始化,并且所得的存储将是不合格的。vector<T>
与vector<T*>
的组合稍好一些,后者存储的指针将一排分开成一个由前者管理的一个大型缓冲区。