C++ STL其它容器 (上)

STL的三种容器适配器

        容器适配器:queue、priority、stack

        有序关联容器:set、map、multiset、multimap

        无序关联容器:unordered_se和unordered_map/unordered_multiset和unordered_multimap

什么是容器适配器

        适配器adapter,本质是添加一个中间层来转换要适配双方,c++有三种适配器:函数适配器、容器适配器、迭代适配器。函数适配器我们在前面讲过,原函数的参数列表数量不符合要求,通过二次封装,填写一些固定参数,使其对外参数列表符合要求的一种中间函数被称为函数适配器。

        而容器适配器,是用已有容器来二次封装以完成更复杂的数据结构实现。对外提供操作接口,容器适配器分3种,stack(栈)、queue、priority_queue。

  • stack:栈,先进后出,通常最关心压栈和弹栈操作。
  • queue:队列,FIFO,通常关心入队和出队操作。
  • priority_queue:优先级队列,进入按自排序式,按优先级出,通常也是关心入队和出队操作,例如我们指定从大到小排序,那么我们每入一个数据都会被排序,取的时候就会从大到小取出。

为什么有容器适配器

        前面我们学习了array、vector等容器他们都是独立的,而适配器不是独立的,是基于基本容器的如array、vaector、list等,基本容器偏向于存储特性,核心是元素如何在内存中管理。栈和队列是数据结构型容器,偏重于数据操作特性,核心是元素如何按需进入和输出。所以可以认为顺序容器是底层的实现,而栈和队列是上层应用。适配器容器和栈和队列很类似,都是对底层进行封装去实现某些功能,对外留接口。

        容器适配器很多时候用起来和容器完全一样,所以也可以叫做容器,当然容器适配器和容器的实现肯定是不同的,例如容器适配器对外没有迭代器,内部间接包含的有,但不支持我们去访问,主要是没有访问的必要。至于容器适配器是怎么实现的我们不用关心,只要会用即可。

stack容器适配器        

        基于deque实现的一个栈,头文件<stack>。

初始化

stack<int>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值