C++ 适配器

民间通俗易懂版本:
C++ primer中关于适配器的定义——适配器(adaptor): 是使一种事物的行为类似于另外一事物的行为的一种机制。这个定义初学时觉得好抽象。
为了理解C++中的适配器,不妨先了解物理上的适配器。
物理上的适配器就是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等。而C++上的适配器其实是物理上的适配器含义的引申,也是一种接口的转换器。比如两个模块或者两个类等需要互相传递参数,互相通信,但是接口类型不相同,为了让两者能够进行操作,中间加上适配器就能起转换操作的作用。比如类A调用B类的一个函数,这个函数的参数是DATETIME,但是类A调用的时候只能传STRING进去,那适配器就起了一个转换作用,即适配将A的数据转换为DATETIME后再调用该函数。
STL定义了3种形式的适配器:容器适配器,迭代器适配器,函数适配器。

官方版本理解:

1.什么是适配器?
(1)适配器(adaptor):是使一种事物的行为类似于另外一事物的行为的一种机制。它实质上提供一个接口,比如容器适配器包装了容器,提供了一个接口,实质还是容器,但是他不依赖于具体的标准容器类型,可以理解是容器的模版。
关于容器适配器具体点:就是一个容器转换类,假如一个容器A没有push_back函数,A只有insert函数,但是目前有一个函数funcB里面用到了容器的push_back函数,你想要让没有push_back的那个容器A来在funcB当中使用的时候,你就要去做一个容器适配器C,然后将A放入到C当中,然后将C放入到funcB中去完成功能,这样就实现了容器的适配.
(2)适配器模式(adapter),将一个类的接口转化为客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一切工作的那些类可以一起工作。
在软件开发过程中,系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。
适配器模式主要用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
2、c++中的三种适配器
容器适配器、迭代器适配器、函数适配器。
(1)容器适配器包括栈(stack)、队列(queue)、优先队列(priority_queue)。使用容器适配器,stack就可以被实现为基本容器类型(vector,dequeue,list)的适配。可以把stack看作是某种非凡的vctor,deque或者list容器,只是其操作仍然受到stack本身属性的限制。queue和priority_queue与之类似。容器适配器的接口更为简单,只是受限比一般容器要多;
(2)迭代器适配器:修改为某些基本容器定义的迭代器的接口的一种STL组件。反向迭代器和插入迭代器都属于迭代器适配器,迭代器适配器扩展了迭代器的功能;

(3)函数适配器:通过转换或者修改其他函数对象使其功能得到扩展。这一类适配器有否定器(相当于"非"操作)、帮定器、函数指针适配器。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值