发布网友 发布时间:2022-04-21 20:01
共4个回答
热心网友 时间:2023-12-27 17:14
size是指容器当前拥有元素的个数,而capacity是指容器在必须分配新的存储空间之前可以存放的元素总数。如vector<int> ivect(10),ivect.capacity()=10,ivect.size()=0,当你向ivect中插入元素时,只要没有超过十个,那么capacity就不变,而size为你插入的元素的个数。当插入第十个时,capacity=size=10,当再插入一个,即第十一个数据时,容器重新分配存储空间:ivect.capacity()=20,而ivect.size()=11,即容器重新分配空间的话是现有空间的2倍进行分配,以保证vector的效率。
热心网友 时间:2023-12-27 17:15
楼主犯了好几个错误:
1. vector插入元素比剩余空间大的时候本身会自动扩容,而且原理也很easy:
size_type len = old_size + max(old_size, n);所以无需自己扩容。
2. vector的使用显然是应该用push_back这样的接口,才可自动扩容,否则就是多此一举,想想vector是干嘛用 的。
3. 至于楼主这两行误用的代码为什么错,vector基于size来运行,capacity只是一种容量可能,reserve只扩充capacity,size不变(两个指针,end-start), 用操作符[]插入元素,会对size做下标越界判断,显然会报错
不懂其内部机理,就老老实实用开放的接口。
vector<int> A; //创建一个向量对 象热心网友 时间:2023-12-27 17:15
capacity的意思是容量,此方法返回的是该vector对象最多能容纳多少个元素。
size的意思是大小,此方法是返回该vector对象当前有多少个元素。
热心网友 时间:2023-12-27 17:16
size表示容器当前的大小,已存了多少数据,capacity表示容量,就和一瓶可乐是1L这个容量一样,但是里面不一定有1L的水。追问网上复制的就不要贴来了。。。看看我的问题再说怎么样~
追答呵呵,我看了你的标题,自己回答的,你怎么知道我复制的?