我在其他答案中读到,c ++编译器的最大大小std :: vector没有限制.我试图使用矢量为一个目的,并需要有10 ^ 19项.
typedef struct{
unsigned long price, weight;
}product;
//inside main
unsigned long long n = 930033404565174954;
vector<product> psorted(n);
Run Code Online (Sandbox Code Playgroud)
程序打破了最后一个声明.如果我尝试resize(n)而不是初始化n然后还有消息的程序中断:
vector<T> too long
std::length_error at memory location
Run Code Online (Sandbox Code Playgroud)
我需要在放入向量后对价格进行排序.我该怎么办 ?
Nic*_*las 13
std::vector 确实有多少东西可以承载极限.您可以使用std::vector::max_size它来查询,返回您可以使用的最大大小.
10 ^ 19项.
你有10^19 * sizeof(product)记忆吗?我猜你没有~138 Exa字节的RAM.另外,您必须在64位模式下进行编译才能考虑分配这么多.编译器没有破坏; 试图分配太多东西你的执行是破碎的.
| 归档时间: |
|
| 查看次数: |
14843 次 |
| 最近记录: |