配接器

一、简介

1、配接器其实是一种设计模式

(1)将一个class的接口转换为另一个class的接口
(2)是原本因为接口不兼容而不能合作的classes,可以一起运行

2、分类

(1)容器的配接器
(2)迭代器的配接器
(3)仿函数的配接器

二、容器的配接器

1、stack底层有deque实现


template<class T,class Container=deque<T> >
class stack
{
protected:
Container s;//底层容器
};
思考:为什么stack是容器的配接器
stack类屏蔽了deque的所有对外的接口,只开放了符合stack原则的几个函接口(这些接口是通过deque的接口转换而来的),所以说stack是一个配接器,一个作用于容器之上的配接器

2、queue


template<class T,class Container=deque<T> >
class queue
{
protected:
Container s;//底层容器
};

思考:为什么deque容器的配接器

三、迭代器的配接器

1、ReverseIterator

是屏蔽了Iterator的所有对外的接口,只开放了符合Reverseiterator的几个原则的接口(这些接口是通过Iterator的接口转换而来的)

四、仿函数的配接器

(1)仿函数的配接器可以实现两个函数的合成,例如>和=合成为>=,而+和=合成为+=
(2)可以事项对于函数指针的封装

五、总结

container adapters内藏了一个container member一样,reverse iterator底层内藏了iterator member,而functions 的底层内藏了一个functions,
每个配接器的底层都有封装了一个对象,既然是这个对象的主人,就有资格调用该对象,并在参数和返回值上动手脚
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值