STL简介
来源:互联网 发布:恐怖漫画 软件 编辑:程序博客网 时间:2024/06/06 07:44
STL: standard template library,标准模板库。由容器、迭代器、空间配置器、配接器、算法、仿函数六部分组成。STL并非是面向对象的,为了具有足够通用性,主要依赖于模板而不是OOP三要素(封装、继承以及多态),没有明显的类继承关系。有17个头文件:<algorithm>、<deque>、<functional>、<itreator>、<array>、<vector>、<list>、<forward_list>、<map>、<memory>、<numeric>、<queue>、<unordered_set>、<stack>、<utility>。
一、容器:
一定程度上充当着数据结构的作用,为适应不同数据的变化STL容器提供方便,通过对模板类的设置对常用的数据结构提供支持。其头文件有<vector>、<list>、<duque>、<set>、<map>、<stack><queue>。
序列式容器:向量(vector):连续存储的元素。
列表(list):由节点组成的双向链表,每个结点包含一个元素。
双端队列(deque):连续存储的指向不同元素的指针所组成的数组。
适配器容器:栈(stack):后进先出的值排列。
队列(queue):先进先出的值排列。
优先队列(priority_queue):元素的次序是有作用于所存储的值对上的某种谓词决定的一种队列。关联式容器:集合(set):由节点组成的红黑树,每个节点都包含一个元素,节点间以某种作用于元素对的谓词排列,没有两个不同的元素能拥有相同的次序。
映射(map):由{键,值}对组成的集合,以某种作用于键对上的谓词排列。多重映射(multimap):运行键对有相当的次序映射。
二、迭代器:
它提供了访问容器中对象的方法并定义了容器中对象的范围,如同一个指针的作用。迭代器由各种不同的传教方法,可以作为一个变量创建,可以为使用一个特定类型的数据而创建,作为指针,能够使用*操作符来获取数据,但STL不保证可以从一个迭代器来抵达另一个迭代器。软件设计的过程中,索引的问题都可以通过引进一个间接层来简化,在 STL中用迭代器来完成。将算法和容器连接为一个整体,几乎STL提供的所有算法均是通过迭代器来存取元素序列的,每个容器都定义了其本身所专有的迭代器。迭代器由头文件<utility>、<iterator>、<memory>组成。
<utility>:很小的头文件,包括了在STL中的几个模板的声明。
<iterator>:提供迭代器使用的许多方法。
<memory>:以不同寻常的方式为容器中的元素分配存储空间,为某些算法执行期间产生的临时对象提供机制,主要部分是模板类allocator,负责产生所有容器中的默认分配器。
迭代器的类型:Input iterators:提供对数据的只读访问。
Output iterators:提供对数据的只写访问。
Forward iterators:提供读写操作,并能向前推进迭代器。Bidirectional iterators:提供读写操作,并能向前和向后操作。Random access iterators:提供读写操作,并能在数据中随机移动。
三、算法:
用来操作容器中的数据的模板函数。C++通过模板机制允许推迟对某些类型的选择,直到需要使用模板或者对模板进行转换的时候。STL提供相当多的算法,不依赖于任何特定的数据类型,在一个有效的框架中完成这些算法。由<algorithm>、<numeric>、<functional>组成。
<algorithm>:最大的一个头文件,由一大堆模板函数组成,每个函数在很大程度上是独立的,常用的功能有比较、交换、查找、遍历操作、复制、修改、删除、反转、排序、合并等。
<numeric>:包括几个在序列上进行简单数学运算的模板函数,如:加减乘除等。
<functional>:定义了一些模板类,用来声明函数对象。
- STL简介
- STL简介
- STL 简介
- STL简介
- stl简介
- STL简介
- STL简介
- STL简介
- STL简介
- STL简介
- STL简介
- STL简介
- STL简介
- STL简介
- STL 简介
- STL简介
- STL 简介
- STL简介
- 指针数组及数组指针
- asp.net中iframe详细用法
- docker私有仓库搭建
- Android常用开源项目(十四)
- Android JSON数据解析详细用法
- STL简介
- unkown the request
- git fetch取特定分支
- RFC,其实也就这么多了,不会再多了,基本协议是固定的。
- 使用session对象获取表单信息
- Android解决bug的思路:追本溯源
- httpclient 在获取返回值时,使用getResponseBody触发警告的问题
- css修改input中placeholder 的字体颜色
- IOS指定APP程序入口