STL标准模板库简介

STL简介

STL(Standard Template Library),标准模板库。
它是为了建立数据结构和算法的一套标准,并且降低其间的耦合关系而产生,它给我们带来了一套极具实用价值的零部件,以及一个整合的组织。(文章之后会介绍它的六大组件)
它所实现的,是依据泛型思维架设起来的一个概念结构,以抽象概念为主题形成了严谨的接口标准,使得其组件都有最大的独立性。
STL的版本很多,常见的有HP STL、PJ STL、 SGI STL等。

STL的六大组件

STL提供了六大组件,他们之间可以组合套用。
它们之间的关系为:容器通过配置器获取数据存数空间,算法通过迭代器存取容器的内容,仿函数可以协助算法完成不同的策略变化,配接器可以修饰或套接仿函数。

配置器(allocators)

负责空间配置和管理,配接器是一个实现了动态空间配置、空间管理、空间释放的class template

容器(containers)

各种数据结构,如vector,list, deque,set,map,它们用于存放数据。

迭代器(iterators)

看到迭代器这个名字,我很迷惑,不知道这个高端的名字到底是个什么东东。其实迭代器就像是胶水,讲数据结构(容器)和算法粘合在一起,它有5种类型,刚刚接触到它的时候有人让我把它理解成指针,其实后来了解到原生指针也是迭代器的一种。迭代器就是所谓的“泛型指针”,我们可以通过之后的源码阅读来深层次了解它。

算法(algorithms)

各种常用的算法,如sort,search,erase等。

仿函数(functors)

顾名思义,仿函数就是行为类似于函数(但是实则不是),它可作为算法的某种策略,一般的函数值真可以视为狭义的仿函数。

配接器(adapters)

一种用来修饰容器、仿函数、或迭代器的东西。例如,STL提供的queue,虽然看似容器,但只能算是一种容器配接器,因为它的内部完全借助于deque,所有操作都由deque供应。

猜你喜欢

转载自blog.csdn.net/lyn_00/article/details/83928612