读书人

stl中的适配器是个什么意思?小弟我如

发布时间: 2013-07-08 14:13:00 作者: rapoo

stl中的适配器是个什么意思?我怎么不明白?
到底是个啥,和电源适配器有何不同?
[解决办法]
变压插头不能产生电, 但它可以使用已有的电压进行转换.
[解决办法]
适配就是一个转换接口
[解决办法]
简单点说,就是有类或函数proc可以操作类a,有类b接口定义与a不同,proc不能操作类b。我写个类c实现与a相同的接口,用b来实现功能,那么类c就是一个适配器。
[解决办法]
有两种实现方式,类适配和对象适配。类适配用继承实现,对象适配用聚合(类中包含对象)
[解决办法]
适配器可以使一个容器的行为表现的像另一个容器.
[解决办法]

引用:
Quote: 引用:

适配器可以使一个容器的行为表现的像另一个容器.

也就是将一个容器转换为另一个容器了。

不是一回事。
适配器就是用A去实现B的接口。
最典型的就是流。输入流和输出流都不支持迭代器,而STL算法都是通过操作迭代器来实现的,如果需要用STL算法处理流中输入的数据时,就用std::istream_iterator,这就是一个适配器,它提供输入迭代器的接口,使用istream来实现。

[解决办法]
适配器跟电源适配器是一道理:
比如: 我们的手机只接受5V直流冲电, 但是我们的照明电源用是220V的交流电, 这时就需要电源适配器来转换, 把220V交流电转换成5V直流电.

程序设计中也同理:
比如: 我们的一个接口 void fun(CString a) , 只接受字符串类型变量, 但是上方提供的数据又只有一个整型变量int a, 这时就需要一个适配器来把 int a 转换成 CString a;
[解决办法]
适配器并不会改变两端的类, 比如你的电源适配器, 不会一插上, 你的照明电源就变成5V了吧, 照明电还是220V, 只是经过适配器后变成了5V.

所以适配器, 仅仅是转换,协调两端接口的不同. 不会去改变原来的东西.

源 --> 适配器 --> 目标
220V --> 变压器 --> 5V
int --> 适配器 --> CString

记得设计模式上说的, 适配器模式使用的条件, 多数是由于接口的改变, 而又不能修改接口的情况下, 中间加上一个适配器来转换成统一的接口, 使得原来的程序仍然能正常运行.

读书人网 >C++

热点推荐