STL容器选择的建议

标准库中现在有13种容器 STL 概述,可作出选择有很多,选择的多样性也意味着在选择时需要考虑多种因素。

在选择容器时需要全盘考虑,需要关心元素的排列情况、迭代器的能力、元素布局与C接口的兼容性、查找速度、引用计数所引起的反常行为、以及迭代器在何种情况下失效等等。

建议1
是否需要在容器的任意位置插入新元素?如果需要就选择序列容器;排除关联容器。vector,deque,list中选择:这三种容器提供了不同的复杂性,vector是默认应使用的序列类型;当需要频繁地在序列中间做插入和删除操作时,应使用list;当大多数插入和删除操作发生在序列的头部和尾部时,deque是应该被考虑的数据结构。

建议2
是否关心容器中的元素是如何排列的?如果不关心,则哈希容器是一个可行的选择方案;排除哈希容器。

建议3
需要那种类型的迭代器?如果必须是随机访问迭代器,则选择就被限定为连续内存容器,vector、deque、string;如果要求双向迭代器,forward_list和哈希容器不可用。

建议4
当发生元素的插入和删除时,避免移动容器中原来的元素是否很重要?如果是,就要避免连续内存的容器。

建议5
容器中的数据的布局是否需要和C兼容?如果需要就只能选择数组容器,array,vector,string。

建议6
元素的查找的查找速度是否是关键的考虑因素?如果是,就要考虑哈希容器、排序的vector、有序的关联容器 -- 或许这就是优先顺序。

建议7
如果容器内部使用了引用计数技术,是否介意?如果是,就要避免使用string。可以考虑vector<char>代替。

建议8
需要使用迭代器、指针和引用变为无效的次数最少吗?如果是,就需要使用基于节点的容器。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

u010787096

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

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

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

打赏作者

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

抵扣说明:

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

余额充值