-3

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

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

4

2 回答 2

9

当然。编译一个 64 位程序。size_t然后将是 64 位宽。

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

于 2013-03-19T18:09:09.107 回答
6

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

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

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

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

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

于 2013-03-19T18:09:58.967 回答