9.1顺序容器概念

这里写图片描述

存储策略会影响特定容器是否支持特定操作:

string和vector:

将元素保存在连续的内存空间中,由于元素是连续的,有元素的下标来计算其地址是非常快的。但是在这两种容器的中间位置添加或删除元素就会非常耗时:在一次插入或删除操作后,需要移动插入/删除位置之后的所有元素,来保持连续存储。而且,添加一个元素有时还需要分配额外的存储空间。这种情况下,每个元素都必须移动到新的存储空间中。

list和forward_list:

这两种容器在任何位置的添加和删除操作都很快速,但是,这两个容器不支持元素的随机访问:为了访问一个元素,只能遍历整个容器。与vector,deque和array相比,这两个容器的额外内存开销也很大。

deque:

与vector和string类似,deque支持快速的随机访问,在中间位置添加或删除元素的代价很高。但是,在deque两端添加或删除元素都是很快的,与list或forward_list添加删除元素的速度一样。

array对象的大小是固定的,因此array不支持添加和删除元素以及改变容器大小的操作。

forwars_list的设计目标是达到与最好的手写的单向链表数据结构相当的性能。因此,没有size的操作,因为保存或计算其大小就会比手写链表多出额外的开销

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值