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 hashmap

全网最全STL hash_map使用讲解 这么
  • u010335911
  • u010335911
  • 2014年05月20日 01:13
  • 2703

STL<vector>用法汇总

使用场合: vector算是一个比较万金油的容器,它是一个可变大小数组,支持随机访问,不过在尾部以外的位置进行增加和删除操作会比较耗时。通常用vector来代替原始的数组来使用,比较方便。 ...
  • weixin_35929051
  • weixin_35929051
  • 2016年09月25日 13:16
  • 1217

STL基础篇(适合初学者快速入门)

1.       STL 是什么 作为一个C++ 程序设计者,STL 是一种不可忽视的技术。 Standard Template Library (STL) :标准模板库, 更准确的说是 C++ 程...
  • a20102110080212
  • a20102110080212
  • 2013年09月14日 11:52
  • 2428

STL文件

STL文件的起源美国3D Systems公司于1987年制定了STL (STereoLithography)文件格式,它以小三角面片为基本单位,离散地近似描述三维实体模型的表面.STL 文件最初应用于...
  • Augusdi
  • Augusdi
  • 2014年03月11日 10:52
  • 8105

STL中随机数的调用

由于我们对我们写的程序需要测试数据,为了我们的程序能够经得起任何考验我们采用随机数库不一定没有bug,使用之前测试库是一个好习惯随机数发生器rand()核心函数是#include中的rand()函数他...
  • The_best_man
  • The_best_man
  • 2017年04月17日 20:11
  • 627

STL高频面试题

1.具体说明STL如何实现vectorvector的内部是使用动态数组的方式来实现的,如果动态数组的内部实现不够用,就要动态的重新分配内存。然后把原数组的内容拷贝过去。2.vector和list的区别...
  • u010126059
  • u010126059
  • 2016年02月21日 14:50
  • 4060

STL是什么

STL是什么
  • u010906311
  • u010906311
  • 2016年02月09日 20:38
  • 1350

STL版本介绍:HP STL、SGI STL、STL Port、PJ STL、RW STL

C++STL的版本实现有很多种,包括:HP STL、SGI STL、STLPort、P.J.Plauger STL和Rouge Wave STL等 一、HP STL。 1.1 设计实现      ...
  • kanguolaikanguolaik
  • kanguolaikanguolaik
  • 2013年09月09日 15:52
  • 2908

stl文件处理

Table of Contents stl文件介绍处理过程源码解析底层类和函数介绍 stl文件介绍 概述 stl文件用三维网格表现实体模型,stl文件有两种...
  • fhln609353626
  • fhln609353626
  • 2015年08月28日 16:31
  • 2041

STL文件操作简介

我们经常整些命令台程序,啥cout>之类的.而实际项目中基本上不会要你用cout啥的在屏幕上输出.而在硬盘上读写文件操作倒很多. 假如没用到MFC或者win API咋去读写文件呢.STL中提供了一些类...
  • weiwenhp
  • weiwenhp
  • 2013年03月20日 17:50
  • 5445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL
举报原因:
原因补充:

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