vector详解

vector----可以看成动态的数组

它允许放

一个vector的大小为12个字节

原理就是vector这个模板类中由三个参数构成
而这三个参数全是指针—3*4==12
1.start -----指向头部的指针
2.finish -----指向尾部的指针
3.end_of_storage-------指向最大容量的指针

事实上vector中最大容量和尾部是不一样的,

头和尾组成有数据的范围

而最大空间是指该vector目前的最大容量

每次在插入新元素时,vector会通过比较finish和end_of_storage是否相等来判断有无空间来放入新元素

若相等,即无空间,此时就是先扩容---------一般linux是2倍扩容,而window是1.5倍。扩容可以概括为重新申请一块大小为之前最大空间大小2倍(或1.5倍)的空间,然后从start到finish将数据重新添加到新的空间中,最后再释放之前的空间并添加新元素

可以想象到,每次扩容,都会有大量元素的拷贝,那么就会调用拷贝构造函数,即以最后还要销毁元素,那么就有析构函数,如果元素量比较大,那么自然耗时会大大增加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值