STL

原创 2012年03月21日 10:40:54

经常听到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,它负责产生所有容器中的默认分配器。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

STL源码解析.pdf

STL中map用法详解

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候...

STL源码剖析(附带源码).rar

  • 2017-10-06 20:43
  • 8.05MB
  • 下载

STL部分总结

  • 2017-09-29 21:05
  • 137KB
  • 下载

【C++ STL应用与实现】6: 如何使用std::list

list是stl对链表数据结构的一种支持,其通常被实现为双向链表。本文介绍了list的基本用法以及在使用list时需要注意的一些问题。

C++ 17 STL Cookbook 无水印pdf

  • 2017-09-22 19:59
  • 11.27MB
  • 下载

Effective STL 无水印pdf

  • 2017-09-22 10:01
  • 2.06MB
  • 下载

SDUST-OJ-1681 Problem 求集合的交并补集(不用STL,手写单链表实现)

Problem A: 求集合的交并补集 任意给定两个包含1-30000个元素的集合A,B(集合中元素类型为任意整型数,且严格递增排列),求A交B、A并B、A-B和B-A集合。

泛型编程与STL中文版

  • 2017-07-11 18:08
  • 17.37MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)