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