std :: vector可以容纳超过2 ^ 32个元素

Que*_*ueg -3 c++ containers vector

std::vector::size返回一个size_t所以我猜它最多可以容纳2 ^ 32个元素.

有没有一个标准集装箱超过可容纳多少更多的元素,例如2 ^ 64 OR的方式来调整std::vector通过例如将"索引" unsigned long long

jal*_*alf 9

当然.编译64位程序.size_t那将是64位宽.

但实际上,你应该做的是退后一步,并考虑为什么你需要这么大的载体.因为很可能,你没有,并且有更好的方法来解决你正在处理的任何问题.


Dre*_*ann 6

size_t没有预定义的大小,虽然在32位计算机上通常上限为2 32.

由于std::vector必须为所有元素保留连续内存,因此在超出大小之前将耗尽内存.

编译64位计算机的程序,你将有更多的空间.

更好的是,重新考虑是否std::vector合适. 为什么要直接在内存中保存数万亿个相邻对象?

考虑一下,std::map<unsigned long long, YourData>如果你只想要大型索引并且不是真的想要存储数万亿个对象.