首页 > 其他 > 详细

vector

时间:2018-05-08 21:34:46      阅读:293      评论:0      收藏:0      [点我收藏+]

一、vector的数据结构

技术分享图片

vector的成员函数size()表示的是当前容器包含元素的数量,vector.size()=finish-start,vector的成员函数capacity()表示的是当前容器的容量,vector.capacity=end_of_storage-start。为了降低空间配置的速度成本,vector实际配置的大小可能比客户端需求量稍大,以备将来扩充的可能,这就是容量(capacity)的概念。一个简单的示意图如下:

技术分享图片

 

二、push_back

将新元素插入vector尾部,该函数首先检查容器是否还有备用空间,如果有就直接在备用空间上构造元素,如果没有备用空间,则扩充空间(重新配置,移动元素,释放原空间)

技术分享图片

技术分享图片

这里可以看到,在备用空间不够时进行动态增加,因为无法保证原空间之后有可供配置的空间,所以并不是在原空间之后续接新空间,而是以原大小的两倍配置一块更大的空间,然后将原内容拷贝过来,并在新空间的原内容之后构造新元素,并释放原空间。还可以看到,如果原空间大小不为0,则新的空间capacity增加为原空间capacity的两倍。还需要注意,由于是动态配置的新空间,位于原空间的上的旧的迭代器会失效

 

三、pop_back

技术分享图片

 

四、erase

技术分享图片

技术分享图片

erase清除某个位置上的元素,是将该位置元素清除,并将其后元素前移,效率是比较低的。

 

五、clear

技术分享图片

 

六、insert

 技术分享图片

技术分享图片

 

vector

原文:https://www.cnblogs.com/scu-cjx/p/9010982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!