C++学习笔记---容器和算法

1、顺序容器:
vector、deque(双向队列)、list

1)各顺序容器特点:
vector和deque容器提供了对元素的快速访问,但付出的代价是,在容器的任意位置插入或删除元素,比在容器尾部插入和删除的开销更大。list类型在任何位置都能快速插入和删除,但付出代价是元素的随机访问开销较大。

list容器不支持随机访问,访问某个元素要求遍历所涉及的其他元素。

对于vector容器,除了容器尾部外,其它任何位置的插入(或删除)操作都要求移动被插入(删除)元素右边所有的元素。
从deque队列的两端插入和删除元素都非常快。在容器中间插入或删除付出的代价将更高。deque容器同时提供 了List和vector的一些性质:
(1)与vector容器一样,在deque 容器的中间insert或erase元素效率比较低。
(2)不同于vector容器,deque容器提供高效地在其首部实现insert和erase的操作,就像在容器尾部的一样。
(3)与vector窗口一样而不同于list容器的是,deque容器支持对所有元素的随机访问。
(4)在deque容器首部或尾部插入元素不会使任何迭代器失效,而在首部或尾部删除元素则只会使指向 被删除元素的迭代器失效。在deque容器的任何其它位置的插入和删除操作将使指向 该项容器元素的所有迭代器都失效。

2)容器选择:
(1)如果程序要求随机访问元素,则应使用vector或deque容器。
(2)如果程序必须在容器的中间位置插入或删除元素,则应采用list容器。
(3)如果程序不是在容器 的中间位置 ,而是在容器首部或尾部插入或删除元素,则应采用deque容器。
(4)如果只需要在读取输入时在容器的中间位置 插入元素,然后需要随机访问元素,则可考虑在输入时将元素ydty到一个list容器 ,接着对些容器重新排序,使其适合顺序访问,然后将排序后的list容器复制到一个vector容器。

如果要求随机访问,同时又必须中间位置插入或删除元素,则看这两种操作哪种比较频繁,再决定使用什么样的容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值