STL之容器——介绍

容器一般分为序列容器(Sequence containers)和关联容器(Associative containers)。

序列容器:每个元素均有固定位置,元素排列顺序和元素值无关,取决于元素的插入时机和地点。STL序列容器包括vector(向量), list(列表), deque(双端队列)。

关联容器:元素位置取决于特定的排序准则及元素值,与元素的插入顺序无关。STL关联容器包括map(映射),set(集合),multimap(多重映射),multiset(多重集合)。

STL除了序列容器和关联容器外,还提供了容器适配器。容器适配器根据基本容器实现,包括stack(栈),queue(队列),priority_queue(优先级队列)。一般来说,stack和queue基于deque实现,priority_queue基于vector实现。

容器的特点:

1.容器类自动申请和释放内存,无需new和delete操作;

2.vector,deque,map支持下标访问,注意list不支持下标访问;特别注意,如果vector和deque若没有预先指定大小,不能用下标法插入元素。

3.只有序列容器可以在初始化时指定容器大小,关联容器不行。

4.使用迭代器访问容器时,关联容器不支持it+n操作,仅支持it++操作。

容器的使用:

1、如果需要高效的随机存取,不在乎插入和删除的效率,使用 vector。
2、如果需要大量的插入和删除元素,不关心随机存取的效率,使用 list。
3、如果需要随机存取,并且关心两端数据的插入和删除效率,使用 deque。
4、如果打算存储数据字典,并且要求方便地根据 key 找到 value,一对一的情况使用 map,一对多的情况使用 multimap。
5、如果打算查找一个元素是否存在于某集合中,唯一存在的情况使用 set,不唯一存在的情况使用 multiset。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值