Ch8 配接器(adapters)

8.1 配接器之概观与分类

  • function adapter:改变仿函数(functors)接口;
  • container adapter:改变容器(container)接口;
  • iterator adapter:改变迭代器(iterator)接口。

8.1.1 container adapters

STL提供的两个容器queue和stack,都是修饰容器deque接口的container adapter。

8.1.2 iterator adapters

  • Insert Iterators:将一般迭代器的赋值(assign)操作转变为插入(insert)操作;
  • Reverse Iterators:将一般迭代器的行进方向逆转,使原本应该前进的operator++变成了后退操作,使原本应该后退的operator--变成了前进操作;
  • IOStream Iterators:将迭代器绑定到某个iostream对象身上;绑定到istream对象(如std::cin)身上的,称为istream_iterator,拥有输入功能;绑定到ostream对象(如std::cout)身上的,称为ostream_iterator,拥有输出功能。

8.1.3 function adapter

8.2 container adapters

http://www.cnblogs.com/atmacmer/p/6344942.html  stack&queue

8.3 iterator adapters

8.4 function adapters

时间: 2024-12-10 22:20:12

Ch8 配接器(adapters)的相关文章

STL源码分析--仿函数 & 配接器

STL源码分析-仿函数 & 配接器 仿函数就是函数对象.就实现观点而言,仿函数其实就是一个"行为类似函数"的对象.为了能够"行为类似函数",其类别定义中必须自定义(或说改写.重载)function call 运算子(operator()),拥有这样的运算子后,我们就可以在仿函数的对象后面加上一对小括号,以此调用仿函数所定义的operator().仿函数作为可配接的关键因素. 配接器在STL组件的灵活组合运用功能上,扮演着轴承.转换器的角色,adapter的定

STL学习_配接器篇

STL学习_配接器篇 定义 配接器(Adapter)在STL组件的灵活组合运用功能上,扮演着轴承.转换器的角色.它事实上是一种设计模式.即将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作. 分类 STL所提供的各种适配器中,改变仿函数(functors)接口者,称为function adapter:改变容器(containers)接口者,称为container adapter:改变迭代器(iterators)接口者,称为iterato

C++函数配接器

一.概述 配接器(adaptor)在STL组件的灵活运用功能上,扮演着轴承.转换器的角色,将一种容器或迭代器装换或封装成另一种容器或迭代器.adaptor这个概念,实际上是一种设计模式,其定义如下: 将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作. 配接器按功能可以分为如下3类: 可以改变函数或仿函数接口的适配器,称为仿函数适配器: 针对容器的适配器,称为容器适配器: 针对迭代器的适配器,称为迭代器适配器. 本博客只介绍仿函数适配器

函数配接器

bind1st(op,value) ----> op(value,param)     //绑定op的第一个参数 bind2st(op,value) ----> op(param,value) not1(op) ---->!op(param) not2(op) ---->!op(param1,param2) 注:其中的bind相关参考boost库中bind内容 int func1(int p1,int p2 ){ cout<<"p1 = "<&

成员函数的函数配接器

在STL标准库中除了提供常规的函数配接器外,还提供了两个针对成员函数的函数配接器,其主要功能是通过这些配接器,你可以针对每一个元素直接去调用其成员函数. 这样的成员函数配接器有两个,分别是: mem_fun_ref(op) 调用对象的成员函数op mem_fun(op) 调用对象指针的成员函数op 这两个函数配接器都是去调用对象中的成员函数op,对于这两个成员函数,以前是只能调用对象的const成员函数,但现在的情况好像有所改变,对所有的成员函数都可以调用了. 具体的示例如下: #include

仿函数和函数配接器

// // main.cpp // function_adaptor // // Created by IDM-PKU on 14-9-3. // Copyright (c) 2014年 PKU. All rights reserved. // #include <iostream> #include <set> #include <deque> #include <algorithm> #include "print.hpp" usin

STL学习笔记(迭代器配接器)

Reverse(逆向)迭代器 Reverse迭代器是一种配接器. 重新定义递增运算和递减运算.使其行为正好倒置. 如果你使用这类迭代器,算法将以逆向次序处理元素.所有标准容器都允许使用Reverse迭代器来遍历元素.下面是个例子: 1 #include <iostream> 2 #include <list> 3 #include <algorithm> 4 using namespace std; 5 6 void print(int elem) 7 { 8 cout

《STL源码剖析》学习笔记系列之七、八——仿函数和配接器

1. 仿函数 仿函数又名函数对象,具有函数性质的对象,就是传入一些参数,然后对参数进行某些运算,然后返回一个值.为了能够使行为类似函数,需要在类别定义中必须自定义function call 运算子operator(). 仿函数有如下几类:算术类仿函数(plus<T>.minus<T>)关系运算类仿函数(equal_to<T>.less<T>)逻辑运算类仿函数(logical_and<T>.logical_or<T>.logical_n

STL标准程序库第一部分总结(Auto_ptr&amp;&amp;numeric_limits,标准模板库,迭代器的配接器)

一 Auto_ptr的使用 1 auto_ptr 拥有权的转移(auto_ptr要求一个只能有一个对象只能有一个拥有者,严谨一无二主) Std::auto_ptr<ClassA>ptr1(new ClassA) Ptr1拥有new出来的对象 Std::auto_ptr<ClassA>ptr2(ptr1) 把控制权交给ptr2此后ptr2就拥有了new出来的对象而ptr1不在拥有它了 2通过赋值实现 Std::auto_ptr<ClassA>ptr1(new ClassA