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

时间:2013-03-19 18:03:09

标签: c++ vector containers

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

是否有标准容器可以容纳个更多元素,例如2 ^ 64 OR 一种通过例如调整std::vector来“索引”的方法一个unsigned long long

2 个答案:

答案 0 :(得分:9)

不确定。编译64位程序。 size_t将是64位宽。

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

答案 1 :(得分:6)

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

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

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

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

如果您只想要大型索引而不是真正想要存储数万亿个对象,请考虑std::map<unsigned long long, YourData>