本文主要是介绍侯捷C++ (二--STL标准库)2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
适配器 adapter
也可以叫做改造器,改造已经存在的东西
有:仿函数适配器、迭代器适配器、容器适配器
实现适配,可以使用继承、复合的两种方式实现。
共性:STL使用复合来实现适配
容器适配器
包括stack、queue,内含一个容器,这样也算一种改造
仿函数适配器
bind2nd
可以看到下面的这个例子,使用算法count_if,其中第三个参数是一个predicate,也就是判断雕件,有一个仿函数对象less<int>(),但是他被仿函数适配器bind2nd(将less的第二个参数帮定位40)和not1(取反)修饰,从而实现判断条件为是否小于40。
bind2nd调用binder2nd。
图上灰色的东西就是仿函数适配器和仿函数之间的问答!这里就体现了仿函数为什么要继承适合的unary_function或者binary_function等类的原因!
还有一个细节:适配器适配之后的仿函数也能够继续被适配,所以适配器要继承unary_function或者binary_function等类,这样才能回答另外一个适配器的问题。
所以,仿函数必须能够回答适配器的问题,这个仿函数才是可适配的!
参考书籍:《STL源码剖析》
参考文章:侯捷C++八部曲笔记(二、STL标准库和泛型编程)_侯捷stl-CSDN博客
这篇关于侯捷C++ (二--STL标准库)2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!