std::vector::size
会返回size_t
,所以我猜它最多可以容纳2 ^ 32个元素。
是否有标准容器可以容纳多个更多元素,例如2 ^ 64 OR 一种通过例如调整std::vector
来“索引”的方法一个unsigned long long
?
答案 0 :(得分:9)
不确定。编译64位程序。 size_t
将是64位宽。
但实际上,你应该做的是退后一步,并考虑为什么你需要这么大的载体。因为很可能,你没有,并且有更好的方法来解决你正在处理的任何问题。
答案 1 :(得分:6)
size_t
没有预定义的大小,但在32位计算机上通常上限为2 32 。
由于std::vector
必须为所有元素保留连续的内存,因此在超出大小之前将耗尽内存。
为64位计算机编译程序,你将有更多空间。
更好的是,如果std::vector
合适,请重新考虑。 为什么要直接在内存中保存数万亿个相邻对象?
如果您只想要大型索引而不是真正想要存储数万亿个对象,请考虑std::map<unsigned long long, YourData>
。