C++ 如何表示在c+中仅存储0或1的数组[100000][100000]+;?

C++ 如何表示在c+中仅存储0或1的数组[100000][100000]+;?,c++,vector,boolean,C++,Vector,Boolean,我试过: vector<int <vector> > Graph(100000, vector<int> (100000)) ; 。。。但它们都不起作用。创建向量向量的正确方法是: vector<vector <int> > Graph(100000, vector<int> (100000)); 向量图(100000,向量(100000)); 但是请注意,这个数组将占用10^5*10^5*4=400亿字节(假设int

我试过:

vector<int <vector> > Graph(100000, vector<int> (100000)) ;

。。。但它们都不起作用。

创建向量向量的正确方法是:

vector<vector <int> > Graph(100000, vector<int> (100000));
向量图(100000,向量(100000));
但是请注意,这个数组将占用10^5*10^5*4=400亿字节(假设int为32位)或大约40GB的RAM。当然,你必须有那么多的记忆。

做得好

int wMyArray[100000][100000];
将给您此编译时错误:
错误C2148:数组的总大小不得超过0x7fffffff字节

然后用向量来做:

std::vector<std::vector<int>> wMyVector(100000, std::vector<int>(100000));

wMyVector.back().back();
std::vector wMyVector(100000,std::vector(100000));
wMyVector.back().back();
加载只需要花费很长时间,实际上可以看到加载时工作字节的数量在增加


<不确定你真的想这么做。< /P>不要为C++问题添加C标记!你不觉得它有点太大了吗?这很不具体,但它不起作用。你认为我们能猜出什么不对吗?当你问一个问题时,为什么它不起作用是很重要的。因为这也会反映出您对问题的理解程度,所以当您尝试做一些尚未准备好做的事情时,可能会出现这种情况。您确定您的计算机内存超过37.25GiB吗?(假设
int
为4字节长)将矢量保存为硬盘或SSD上的文件可能是解决方案。如果需要的话,实现缓存系统。你指的是什么特殊标志?我从来不需要任何特殊标志来分配它(我使用过几种不同的编译器)。我甚至不需要太多的ram+交换来分配它。很多页面在分配时都以“需求零”结尾,直到你们在那个里写了一些非零,它们才被ram使用。@JSF,zenith。唉,我不太记得了。我知道有好几年(也许5年)我需要一个10GB的向量来解决一个我正在为比赛解决的问题。编译器(或链接器-我不记得了)打印了一些错误,我只是在添加了一些标志后才修复了它。我将删除这句话,因为我没有一个例子来支持它。
int wMyArray[100000][100000];
std::vector<std::vector<int>> wMyVector(100000, std::vector<int>(100000));

wMyVector.back().back();