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

std::vector to hold much more than 2^32 elements

本文关键字:32个 元素 vector      更新时间:2023-10-16

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

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

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

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

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

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

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

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

如果你只想要大索引,而不是真的想要存储数万亿的对象,那么考虑std::map<unsigned long long, YourData>