vector容器有容量限制吗?

aTTao 2009-05-21 02:00:19
最近写C++程序用到vector容器,要求vector容器存储非常多的元素。发现当元素增加到一个数量时,vector.size()就不发生变化了。很纳闷!难道vector容器的大小是有限制的?不能够无限制地增长?
...全文
6032 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljt3969636 2009-07-18
  • 打赏
  • 举报
回复
肯定有啊,指令字长有限,内存有限,外存有限
只是够不够大的问题.估计你用不完,reserve也没用.insert添加的话reserve和效率有关系和空间没关系,反正是自增长的
adventurelw 2009-07-17
  • 打赏
  • 举报
回复
如果是声明的自动变量,应该是相当有限的,因为栈上内存就有限。
如果是动态分配在堆上的话,那么可以增大许多倍,但能不能到达理论上限,是需要试一下的。
jhony_lee 2009-07-17
  • 打赏
  • 举报
回复
vector在STL版本的增长幅度都不一样的,好像vc的那个版本当元素增加到一个数量时,vector.size()就不发生变化了,gcc下好像是1.5倍或者2倍的增长幅度。
amossavez 2009-05-21
  • 打赏
  • 举报
回复
楼主你存了多少数据呀??正常时够你用的,上限为vector.max_size()=1073741283,绝对的够你用!你试着reserve一下!!
  • 打赏
  • 举报
回复
size_type的出现,就是为了让容器的size可以理论无上限。
liao05050075 2009-05-21
  • 打赏
  • 举报
回复
一般情况下是够你用的了。
习惯上使用前会reserve()一下,免得它不断地申请新空间,导得性能低下
xlttap 2009-05-21
  • 打赏
  • 举报
回复
用max_size()就能知道了。楼上都说了。
jixingzhong 2009-05-21
  • 打赏
  • 举报
回复
估计不会是到了vector容量上限,可以试试reserve()调整一下vector大小
jixingzhong 2009-05-21
  • 打赏
  • 举报
回复 1
cppreference.com > C++ Vectors > reserve
reserve
Syntax:
#include <vector>
void reserve( size_type size );

The reserve() function sets the capacity of the vector to at least size.
jixingzhong 2009-05-21
  • 打赏
  • 举报
回复
max_size
Syntax:
#include <vector>
size_type max_size() const;

The max_size() function returns the maximum number of elements that the vector can hold. The max_size() function should not be confused with the size() or capacity() functions, which return the number of elements currently in the vector and the the number of elements that the vector will be able to hold before more memory will have to be allocated, respectively.

「已注销」 2009-05-21
  • 打赏
  • 举报
回复
理论上是size_t这么大!
而size_t的x86下的值是:unsigned long
kiffa 2009-05-21
  • 打赏
  • 举报
回复 2
vector<int> v;
cout << v.max_size() << endl;

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧