STL源代码剖析个人总结6--STL配接器

来源:互联网 发布:java新手项目 知乎 编辑:程序博客网 时间:2024/04/28 12:32

配接器在STL组件的灵活应用组合中扮演着转换器的角色,《设计模式》一书中将其定义为了一种设计模式。

适配器按照其使用的场合分为三种类型:

        容器适配器: 改变容器的接口

        迭代器适配器 : 改变迭代器的接口

        仿函数适配器 : 能对仿函数进行组合或改变其接口


一. 容器适配器

            如前面容器一节讲述过的stack,queue 都是通过修饰改变一下deque的接口而得到的

二.  迭代器适配器

        <1>. Insert Iterator: 插入型迭代器适配器主要有三个--back_inserter(Container& x),front_inserter(Container& x),inserter(Container&x,Iterator i).

             每一个插入型的迭代器适配器内部都维护着一个容器;容器拥有自己的迭代器,于是当客户端对插入型适配器执行赋值操作时会在适配器内部转换成对容器本身的操作,但若是容器本身没有提供相应的插入操作,则相应的插入型适配器不能用于此容器之上。(如因vector未提供front_insert操作,故front_inserter不能应用于vector,否则执行时会出错。)

       <2>. Reverse iterators:逆序迭代器适配器,主要有rbegin(),rend()

              迭代器必须是双向迭代器,并且其有begin(),end()方可使用此逆序迭代器适配器。一定要注意rbegin(),rend()与begin(),end()之间的关系。

       <3>. IOStream Iterator: 输入输出流迭代器适配器

              绑定到istream的迭代器具有输入功能

              绑定到ostream的迭代器具有输出功能

三. 函数配接器

       函数配接器是所有配接器中数量最大的一个族群,其配接灵活性 独一无二的。通过其间的绑定、组合、修饰等,几乎可以无限制的创造出各种可能的表达式,并搭配STL算法其演出。大多数函数配接器都定义在文件functional中。(未完,待续。。。)




原创粉丝点击