vector可以容纳超过2^32个元素
std::vector to hold much more than 2^32 elements
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>
。
相关文章:
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 在C++中,如何通过几种类型从元组中选择多个元素
- 删除列表中的第n个元素
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 在链链表中手动插入第五个元素
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 删除列表 c++ 中的最后 3 个元素
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 打印无序映射的第二个元素,即集合
- C++ queue.front();为什么不从第一个元素开始呢?
- 正确unique_ptr 1 个元素分配数组的声明
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 静态堆栈函数不会 1) 输入第一个元素 2)添加新元素时识别旧元素
- 为什么只有当我的容器有超过 32 个元素时才由 std::sort 调用交换?
- vector可以容纳超过2^32个元素