c++ list 为什么没有capacity成员函数

list是一个线性双向链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。
跟vector,string等不同,以vector为例,vector中所存放的元素是按照顺序连续存储的,每个元素紧挨着前一个元素。所以在往vector中添加新的元素时,如果我们没有预先给定足够的空间存放新的元素,容器就不能像list那样简单地将新元素添加到内存中,而是必须重新分配新的内存空间来保存已有元素和新元素,即:将已有元素转移到新开辟的空间,然后添加新元素,再释放旧空间。这样的操作会导致每次添加新元素都要执行一个内存分配和释放,严重影响性能。为了解决这个问题,所以采用了提前预留内存空间的方法,就不需要每次添加新元素都要重新分配内存空间了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值