前两天有一门考试,忙着复习,便有些懈怠了。也趁着清闲想了想感觉还是有必要把对STL整体来上一篇博客介绍一下的。
STL
首先,什么是STL?
STL
standard template library
标准模板库
STL是C++标准库的重要组成部分,它不仅是一个可以复用的组件库,更是一个包罗万象的数据结构与算法的软件框架。
STL主要有六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器。
简单介绍
?容器:( containers )STL内部封装好的数据结构,从实现的角度来看,容器是一种类模板,即class template.
?算法:( algorithms ) C++在<algorithm>中提供了我们常用的一系列算法。如sort等。但和算法相关的头文件并不是只有<algorithm>,不过该头文件一般来说是STL头文件中最大的,其内函数模板所设计的范围非常之广——比较、交换、排序、查找、遍历、反转、移除……除了<algorithm>之外,常用的还有<numeric>以及<functional>。
?迭代器:( iterator )关于迭代器也有一个专门的头文件<iterator>,在理解上,我们可以将迭代器简单地理解为一个指针,实际上指针也的确是迭代器的一种。但大部分迭代器都远比指针复杂。从实现角度来看,迭代器应该是一种class template,其内重载了++,--等一系列运算符。
?仿函数:( functors )仿函数是使一个类看起来像是一个函数,这样操作的实现原理实际上就是将()进行了重载,即在类中实现了一个operator()?。这样的话这个类就拥有了与函数类似的行为,就是一个仿函数类了。
? 适配器:( adapters )适配器通常是用来修改容器等其他组件接口的STL组件,是一个带有一个参数的类模板。STL中有3种形式的适配器:容器适配器,迭代器适配器,函数适配器。
????????容器适配器:是一个封装了序列容器的模板类,它在一般序列容器的基础上提供了一些不同的功能。容器适配器本质上还是容器,不过此容器的实现大量使用了其它基础容器模板类种已经写好了的成员函数。
????????迭代器适配器:所谓迭代器适配器,其本质上依然是一个模板类,但是,该模板类是基于5种基础迭代器实现的。
????????函数适配器:通过转换或者修改其他函数对象使其功能得到拓展。
?空间配置器:( allocators )在实际应用中我们很少涉及STL的空间配置器,但实际上我们的很多操作又离不开空间配置器的默默支持。空间配置器可以为容器分配并管理内存。正是由于STL库的内存是由空间配置器统一管理的,使得STL库的可用性、可移植性以及使用效率都有了很大的提升。然而,空间配置器既然叫做空间配置器而不是内存配置器,自然有其道理——它不仅仅可以为各个容器管理内存,并且可以向硬盘索取空间。
|