C++:STL(标准模板库)
2014-10-10 18:29
183 查看
STL分为三类:algorithm(算法)、container(容器)和iterator(迭代器);
在C++标准中,STL被组织为以下13个头文件:
<algorithm>、<deque>、<functional>、<iterator>、<vector>向量、<list>列表、
<map>映射、<memory>、<numeric>、
<queue>双端队列、<set>集合、<stack>和<utility>
(1容器):一种存储有限集数据元素的数据结构;基本容器有7个:向量、双端队列、列表、集合、多重集、映射和多重映射。
顺序容器:将装入其中的对象按照严格的线性形式组织起来,对其访问是顺序的,也是随机的;包括:向量、双端队列、列表。
关联容器:将装入其中的对象按照非线性的形式组织起来,可以根据一组索引来快速访问对象;包括:集合、多重集、映射和多重映射。
其中,向量、双端队列的逻辑结构相类同;
集合、多重集[b]的逻辑结构相类同;[/b]
[b] 映射和多重映射[b]的逻辑结构相类同;[/b][/b]
向量和列表的区别是:向量用动态数组实现,而列表用链表实现的。
(1)向量(vector) 连续存储的元素<vector>
(2)列表(list) 由节点组成的双向链表,每个结点包含着一个元素<list>
(3)双队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>
(4)集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
(5)多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
(6)栈(stack) 后进先出的值的排列 <stack>
(7)队列(queue) 先进先出的执的排列 <queue>
(8)优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>
(9)映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>
(10)多重映射(multimap) 允许键对有相等的次序的映射 <map>
(2算法):100多个通用算法,被设计成函数模板,具有通用性;如find指的是查找在容器中是否存在等于某个特定值的元素;
sort用于对容器中的元素进行排序;
算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。
(3迭代器):没有迭代器,算法和容器无法完美结合;每个容器都是有自己的迭代器,只有容器自己才知道如何访问自己的元素。
可以说迭代器是一种范型指针,不仅对容器操作,而且STL算法通过迭代器对容器元素进行定位和操作的。
迭代器部分主要由头文件<utility>,<iterator>和<memory>组成。
<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,
<iterator>中提供了迭代器使用的许多方法,
<memory>它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,
<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。
在C++标准中,STL被组织为以下13个头文件:
<algorithm>、<deque>、<functional>、<iterator>、<vector>向量、<list>列表、
<map>映射、<memory>、<numeric>、
<queue>双端队列、<set>集合、<stack>和<utility>
(1容器):一种存储有限集数据元素的数据结构;基本容器有7个:向量、双端队列、列表、集合、多重集、映射和多重映射。
顺序容器:将装入其中的对象按照严格的线性形式组织起来,对其访问是顺序的,也是随机的;包括:向量、双端队列、列表。
关联容器:将装入其中的对象按照非线性的形式组织起来,可以根据一组索引来快速访问对象;包括:集合、多重集、映射和多重映射。
其中,向量、双端队列的逻辑结构相类同;
集合、多重集[b]的逻辑结构相类同;[/b]
[b] 映射和多重映射[b]的逻辑结构相类同;[/b][/b]
向量和列表的区别是:向量用动态数组实现,而列表用链表实现的。
(1)向量(vector) 连续存储的元素<vector>
(2)列表(list) 由节点组成的双向链表,每个结点包含着一个元素<list>
(3)双队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>
(4)集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
(5)多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
(6)栈(stack) 后进先出的值的排列 <stack>
(7)队列(queue) 先进先出的执的排列 <queue>
(8)优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>
(9)映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>
(10)多重映射(multimap) 允许键对有相等的次序的映射 <map>
(2算法):100多个通用算法,被设计成函数模板,具有通用性;如find指的是查找在容器中是否存在等于某个特定值的元素;
sort用于对容器中的元素进行排序;
算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。
(3迭代器):没有迭代器,算法和容器无法完美结合;每个容器都是有自己的迭代器,只有容器自己才知道如何访问自己的元素。
可以说迭代器是一种范型指针,不仅对容器操作,而且STL算法通过迭代器对容器元素进行定位和操作的。
迭代器部分主要由头文件<utility>,<iterator>和<memory>组成。
<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,
<iterator>中提供了迭代器使用的许多方法,
<memory>它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,
<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。
相关文章推荐
- C++ 标准模板库(STL)编程示例 - multimap
- 轻轻松松学习C++ 标准模板库STL
- [转载]C++标准模板库(STL)中map使用详解
- C++ 标准模板库STL set 使用方法与应用介绍(一)
- C++ 标准模板库STL 双端队列 deque 使用方法与应用介绍(一)
- C++ STL(标准模板库) 学习资源列表
- C++ 标准模板库STL 优先级队列 priority_queue 使用方法与应用介绍(一)
- C++标准模板库STL简介
- 三个小时理解掌握 STL(标准模板库) C++
- C++ 标准模板库STL multimap 使用方法与应用介绍(一)
- C++ STL(标准模板库) 学习资源列表
- 轻轻松松学习C++ 标准模板库STL
- C++ STL(标准模板库) 学习资源列表
- C++标准模板库(STL)之list
- 初识C++标准模板库STL
- C++标准模板库(STL)—简介
- STL (Standard Template Library)标准模板库 C++
- 《深入学习:GNU C++ for Linux 编程技术》 第23章:使用标准模板库(STL)
- C++ 标准模板库STL 双向链表 list 使用方法与应用介绍(一)
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍(一)