码迷,mamicode.com
首页 > 其他好文 > 详细

重温《STL源码剖析》笔记 第一章

时间:2014-09-02 22:41:15      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   使用   ar   数据   2014   

                     源码之前,了无秘密。 --侯杰

经典的书,确实每看一遍都能重新收获一遍:

第一章:STL简介

  STL的设计思维:对象的耦合性极低,复用性极高,符合开发封闭原则的程序库。

 

  STL的价值:1.带给我们一套极具实用价值的零部件,以及一个整合的组织。

        2.带给我们一个高层次的以泛型思维为基础的、系统化的、条理分明的“软件组件分类学”。

 

  在STL接口之下,任何组件都有最大的独立性,并以所谓迭代器胶合起来,或以配接器互相配接,或以所

  谓仿函数动态选择某种策略。

 

  STL六大组件:1.容器(containers):各种数据结构,如vector,list,deque,set,map用来存放数据。

         2.算法(algorithms):各种常用算法,如sort,search,copy,erase,etc。从实现的角度看

          STL算法是一种function template

         3.迭代器(iterators):扮演容器与算法之间的胶合剂,是“泛型指针”。一种将operator*,

          operator->,operator++,operator--等予以重载的class template。

          4.仿函数(functors):行为类似函数,可作为算法的某种策略。一种重载了operator()的class

          或class template.一般函数指针可视为狭义的仿函数

          5.配接器(adapters):一种是用来修饰容器、仿函数、迭代器接口的东西。比如:queue

          和stack是一个容器配接器,所有操作由底层deque供应。

          6.配置器:负责空间配置与管理。实现了动态空间配置、空间管理、空间释放的

          class template

 

  STL六大组件的交互关系:Container通过Allocator取得数据存储空间;Algorithms通过Iterator存取

  Container内容,Functor可以协助Algorithm完成不同的策略变化(比如qsor的最后一个参数),Adapter

  可以修饰或套接Functor。

  图形如下:bubuko.com,布布扣

 

  GNU:GNU is Not Unix   是不是递归了,呵呵--

 

  STL版本,最早的是HP版本,本书介绍的是SGI STL版本

 

  美妙的源代码:

template<class Interactor, class T>
Interactor find(Interactor first, Interactor last, const T& value) {
    while(first != last && *first != value) {
        ++first;
    }
    return first;
} 


#if defined(_STL_NEED_BOOL)
    typedef int bool;
# define true 1
# define false 0
#endif

 

  采用前闭后开区间表示法[)。迭代器last所指的是“最后一个元素的下一个位置”

 

  仿函数代码实现:

 1 template<class T>
 2 struct plus {
 3     T operator() (const T& x, const T& y) const {
 4         return x+y;
 5     }
 6 };
 7 int main() {
 8     //以下产生仿函数对象
 9     plus<int> plusobj;
10     //以下使用仿函数,就像使用一般函数一样
11     cout << plusobj(3,5) << endl;    //8
12     //以下直接产生仿函数的临时对象(第一对小括号),并调用之(第二对括号)
13     cout << plus<int>()(4,6) <<endl;    //10

 

重温《STL源码剖析》笔记 第一章

标签:style   blog   http   color   io   使用   ar   数据   2014   

原文地址:http://www.cnblogs.com/xxiaoye/p/3950771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!