STL 简介

来源:互联网 发布:ubuntu开机出现grub 编辑:程序博客网 时间:2024/05/16 08:03
STL介绍

STL (Standard Template Library,标准模板库) 的特点

  • STL是 C++ 的 ANSI/ISO 标准的一部分,可以用于所有 C++ 语言编译器和所有平台(Windows/Unix/Linux..)。
  • STL 提供了大量的可复用软件组织。例如,程序员再也不用自己设计排序,搜索算法了,这些都已经是STL的一部分了。
  • 使用STL 的应用程序保证了得到的实现在处理速度和内存利用方面都是高效的,因为STL设计者们已经为我们考虑好了。
  • 使用STL编写的代码更容易修改和阅读。因为代码更短了,很多基础工作代码已经被组件化了;使用简单,虽然内部实现很复杂。
  • STL 的代码从广义上讲分为三类:algorithm(算法)、container(容器)和 iterator(迭代器)
  • 在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>

algorithm (算法)

algorithm (算法) 是处理容器里面数据的方法、操作。算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。

  • <algorithm> 是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。
  • <numeric> 体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。
  • <functional> 中则定义了一些模板类,用以声明函数对象

container (容器)

container (容器) 是可容纳一些数据的模板类。容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成。

  • 向量( vector ):连续存储的元素 <vector> 
  • 列表( list ):由节点组成的双向链表,每个结点包含着一个元素 <list> 
  • 双队列( deque ):连续存储的指向不同元素的指针所组成的数组 <deque> 
  • 集合( set ):由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set> 
  • 多重集合( multiset ):允许存在两个次序相等的元素的集合 <set> 
  • 栈( stack ):后进先出的值的排列 <stack> 
  • 队列( queue ):先进先出的执的排列 <queue> 
  • 优先队列( priority_queue ):元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue> 
  • 映射( map ):由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map> 
  • 多重映射( multimap ):允许键对有相等的次序的映射 <map> 

iterator (迭代器)

iterator (迭代器) 遍历容器中数据的对象。迭代器部分主要由头文件<utility>,<iterator>和<memory>组成。

  • < utility >是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,
  • < iterator > 中提供了迭代器使用的许多方法,
  • < memory >的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制, <memory> 中的主要部分是模板类 allocator,它负责产生所有容器中的默认分配器。

参考文章:

  1. 转载一篇STL的文章
  2. STL是什么
  3. 三十分钟掌握STL
  4. STL入门导论

0 0
原创粉丝点击