STL

经常听到STL这个术语,但不知道具体是啥玩意儿。以下主要摘自百度百科“STL”

STL即Standard Template Library,标准模板库。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,被内建在编译系统之内,因此不用额外安装什么。

在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

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

STL的容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。(deque,全名double-ended queue,双端队列,可以在两端插入和删除元素)

向量(vector)——连续存储的元素<vector>

列表(list)——由节点组成的双向链表,每个结点包含着一个元素<list>

双队列(deque)——连续存储的指向不同元素的指针所组成的数组<deque>

集合(set)——由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序<set>

多重集合(multiset)——允许存在两个次序相等的元素的集合<set>

栈(stack)——后进先出的值的排列<stack>

队列(queue)——先进先出的值的排列<queue>

优先队列(priority_queue)——元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列<queue>

映射(map)——由{键,值}对组成的集合,以某种作用于键对上的谓词排列<map>多重映射(multimap)允许键对有相等的次序的映射<map>

STL的迭代器从作用上来说是最根本的部分,软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完成的。概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。

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

阅读更多
个人分类: VC++编程
上一篇转自人人网-结构之法算法研究编程艺术
下一篇排序算法
想对作者说点什么? 我来说一句

stl的学习:c++ STL

2009年09月07日 537KB 下载

走进STL走进STL走进STL

2011年06月04日 68KB 下载

stl源码剖析 stl源码剖析

2010年08月05日 7.03MB 下载

STL 例题.RAR

2011年07月21日 1.32MB 下载

STL源码剖析

2008年05月07日 5.98MB 下载

Effective STL

2010年04月07日 464KB 下载

走近 STL走近 STL走近 STL走近 STL

2011年05月18日 4.09MB 下载

STL入门基础

2017年09月30日 16.03MB 下载

STL Source

2009年12月18日 23.48MB 下载

没有更多推荐了,返回首页

关闭
关闭