容器适配器

19 篇文章 0 订阅
  • 每种容器都提供了一组接口,如果容器中的接口不能满足需求,那么重新编写容器还是改变我们的需求
  • 应该构造一个容器接口到需求接口之间的转换器,称为容器适配器
  • 容器适配器将原容器进行了一层封装,底层基于普通容器,上层对外提供封装后的新接口,满足不同使用者的需求。常用的栈stack、队列deque、优先级队列priority_queue在STL中都有自己的容器适配器。
  • 容器适配器对使用者是个黑盒,使用者无需知道容器适配器封装的容器类型,而只需了解容器适配器提供的接口。除了使用STL提供的容器适配器,也可以自己构造容器适配器,将STL中的容器进行封装,对外提供所需的接口。
  • 容器适配器可以封装的容器类型根据容器适配器对外提供的接口和容器适配器的内部算法而定。但是任何容器适配器对底层容器都有一些通用的要求,例如,底层容器必须支持添加删除 和访问尾元素操作,因此array不能作为容器适配器的底层容器。
  • 栈适配器和队列适配器默认的底层容器是deque,优先队列适配器默认的底层容器是vector。在创建容器适配器的对象时,也可以指定其他合理的容器作为容器适配器的底层容器。创建容器适配器对象的方式如下:

栈:

stack<int> s;//默认使用deque

stack<int,vector<int>> s;//指定使用vector

队列:

queue<int> q;//默认使用deque

queue<int,lise<int>> q;//指定使用list

优先队列:

priority_queue<int> p;//默认使用vector

priority_queue<int,deque<int>> p;//指定使用deque

priority_queue<int,vector<int>,cmp>> p;//指定使用vector和权重比较函数cmp

  • 注意:

容器适配器和底层容器是组合的关系,插入容器适配器中的元素最终都保存在底层容器中,容器适配器中的数据成员包括一个用于存储元素的底层容器对象和一些辅助数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值