【C++学习笔记】标准库容器Vector可变长度实现原理

vector是C++中标准库容器的一种,vector与C++基本类型数组最大的不同是:数组定长,在初始化时必须定义长度,且不可再添加元素;vector可使用vec.pusu_back()来动态增加元素。

数组和vector都是线性表的顺序存储结构。
数组在定义时就规划了一片固定长度的内存空间,一般不可增加,若要再增加,需要重新申请内存;
那么,vector的动态增加元素是怎么实现的呢?vector其实也是在定义的时候就规划了一篇内存空间,但是内存空间比定义的size要大,也就是说预留了一部分内存空间来用于存储新增的元素。而且还可以自己定义需要预留的空间大小,vec.reserve() 这样就不会对内存空间造成太大的浪费。

总的来说,数组是C++的基本类型,不可增长,空间利用效率高,但是不是很灵活实用,如果溢出的话还可能有存在很大的程序安全问题;vector是标准库定义的类模板,支持的函数非常丰富,而且支持动态添加,但是需要预留一部分空间作为预留空间,存在一定的浪费,但是可以通过自定义预留空间最小化空间浪费。vector比数组要实用很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值