Chinaunix首页 | 论坛 | 博客
  • 博客访问: 176686
  • 博文数量: 43
  • 博客积分: 827
  • 博客等级: 准尉
  • 技术积分: 487
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-26 19:19
文章分类

全部博文(43)

文章存档

2015年(1)

2014年(1)

2013年(5)

2012年(36)

我的朋友

分类: C/C++

2012-02-17 13:43:20


上图简单的描述了STL几个部分的结构。
说明:
Allocator :为了将Container从底层的内存分配策略独立出来,而让Container仅仅依赖于统一的接口,Allocator提供了这样的作用。在Allocator主要提供功能是:1,分配内存,在allocate中提供;2:释放内存,在deallocate中提供;3:构建对象,将内存初始化为有含义的Object,在construct中提供;4:析构对象,将Object析构掉,还原为内存,在destroy中提供。
一些内存管理策略可以在Allocator中实现或者进一步提供一个内存管理层在Allocator之下。
Container :实现各自容器的逻辑功能,比如vector,map,set, list,他们只关心自己应该具有的功能。在C++中,为了避免virtual机制的引入导致性能的损失,所以各个容器之间的函数接口采用了一种约定的方式定义,而非定义一个公共的interface出来,然后设计出一个container的class hierarchy,因此各个Container类之间是独立的类,大家都有一些共同函数接口。
Iterator :提供一种独立于容器类型,能够序列化的遍历容器元素的接口设计,同样为了高效的访问容器元素,Iterator也没有Class Hierarchy的设计,Iterator class都是自己容器提供class 定义,设计Iterator中引用元素的方式和遍历方式,只要遵循Iterator能够序列化的遍历自己。
Algorithm :针对Iterator的类型,提供了一些常用的算法,他是独立于容器的,但为容器提供了一个工具函数集。

在Allocator,Container,Iterator在内部定义了很多的typedef,这为template实现提供了一个通用的类型接口,而traits就用来解析对应的内部typedef的接口。

阅读(891) | 评论(0) | 转发(0) |
0

上一篇:深入函数指针--续

下一篇:Project Spot Light

给主人留下些什么吧!~~