Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
stl";向量<;T>;太长了”; 我在其他答案中读到C++编译器没有限制。我尝试使用vector的目的只有一个,需要10^19项 typedef struct{ unsigned long price, weight; }product; //inside main unsigned long long n = 930033404565174954; vector<product> psorted(n);_C++_Stl_Vector - Fatal编程技术网

stl";向量<;T>;太长了”; 我在其他答案中读到C++编译器没有限制。我尝试使用vector的目的只有一个,需要10^19项 typedef struct{ unsigned long price, weight; }product; //inside main unsigned long long n = 930033404565174954; vector<product> psorted(n);

stl";向量<;T>;太长了”; 我在其他答案中读到C++编译器没有限制。我尝试使用vector的目的只有一个,需要10^19项 typedef struct{ unsigned long price, weight; }product; //inside main unsigned long long n = 930033404565174954; vector<product> psorted(n);,c++,stl,vector,C++,Stl,Vector,我需要在输入矢量后根据价格对数据进行排序。我该怎么办?std::vector对它能携带多少东西是有限制的。您可以使用std::vector::max_size查询此项,它返回您可以使用的最大大小 10^19项 typedef struct{ unsigned long price, weight; }product; //inside main unsigned long long n = 930033404565174954; vector<product> psorted

我需要在输入矢量后根据价格对数据进行排序。我该怎么办?

std::vector
对它能携带多少东西是有限制的。您可以使用
std::vector::max_size
查询此项,它返回您可以使用的最大大小

10^19项

typedef struct{
  unsigned long price, weight;
}product;


//inside main
unsigned long long n = 930033404565174954;
vector<product> psorted(n);

您是否有
10^19*sizeof(产品)
内存?我猜您没有~138字节的RAM。另外,你必须在64位模式编译,甚至考虑分配这么多。编译器没有崩溃;您试图分配太多的资源,执行力正在下降。

其他人已经告诉您问题所在。一个可能的解决方案是使用这个库,它是STL的一个实现,专门为巨大的、内存不足的数据集而设计

但是,10^19个8字节项的容量为8000万TB。我不确定有没有人有这么大的磁盘


另外,假设磁盘带宽为300MB/s,那么写这篇文章需要8000年 TyPufFrase< /Cuff>?也许有人有很多忘却的事情要做?:-)93003340456174954比10^9大得多。请检查
sizeof(std::vector::size\u type)
。这告诉你最大尺寸。@Pheonix:你真的有10^19款独特的产品吗?地球上没有那么多的沙粒,更不用说你的电脑上有足够的存储空间了。告诉我们这个数字意味着什么,你可能会想出更好的方法。那么我应该如何对数据进行排序呢?@Pheonix:如果你问的是如何对这些数据进行排序,那么你应该解释一下从何处获取数据,因为你显然拥有比RAM更多的数据。您的问题标题有误导性。hadoop中的identity mapreduce可以做到这一点。即使在单个盒子上,这也将尽可能地并行排序,可能会使排序更快。“我猜您没有~138 EB的RAM。”嗯,我猜你连138EB的磁盘空间都没有。@Pheonix:我很确定他们希望你使用递归算法,从算法中找出事情的顺序。而不是将它们写入比实际存在的内存更多的内存,然后尝试使用快速排序对它们进行排序。