C++序列容器实现-----vector(扩容及回收、swap方法)

本文探讨了C++中vector的扩容机制,指出在VS下扩容以1.5倍扩大,GCC环境下以2倍扩容。在删除元素时,vector不会自动回收内存,仅在析构时释放。通过clear()结合swap()可强制释放内存。同时介绍了swap函数的内存释放技巧,利用临时对象析构来释放原vector占用的空间。
摘要由CSDN通过智能技术生成

vector

动态空间,随着元素的加⼊,它的内部机制会⾃⾏扩充空间以容纳新元素。 vector 维护的是⼀个连续的线性空间,⽽且普通指针就可以满⾜要求作为 vector 的迭代( RandomAccessIterator )。
vector 的数据结构中其实就是 三个迭代器构成的,⼀个指向⽬前使⽤空间头的 iterator,⼀个指向⽬前使⽤空间尾的iterator,⼀个指向⽬前可⽤空间尾的iterator。 当有新的元素插⼊时,如果⽬前容量够⽤则直接插⼊,如果容量不够,则容量扩充⾄两倍,如果两倍容量不⾜, 就扩张⾄⾜够⼤的容量。 扩充的过程并不是直接在原有空间后⾯追加容量,⽽是重新申请⼀块连续空间,将原有的数据拷⻉到新空间中,再释放原有空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是纠结伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值