码迷,mamicode.com
首页 > 其他好文 > 详细

vector

时间:2018-05-08 22:17:28      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:image   star   vector   com   清除   cto   函数   bubuko   还需要   

一、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

标签:image   star   vector   com   清除   cto   函数   bubuko   还需要   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!