函数对象
提供具体的算法策略 。算法
相当于发动机,提供聚合动力 。STL
的核心(无数据无程序)组件,且类型繁多,下文将简要介绍容器的共性操作 。2. 容器
STL
中的容器和数组相似,能够存储数据集,但有其自身的特点:- 支持容量的自动增长 。当添加数据时,如果容量不够时,容器会自动分配新的内存 。
- 容器可以迭代 。
- 支持数据类型参数(泛型编程) 。
STL
中的容器众多,有点乱入花丛渐迷眼的既视感 。一般会按照存储方式对其进行分类:- 序列式容器:数据以添加时的顺序进行存储,当然可以对数据排序 。
- 关联式容器:数据由
键
和值
两部分组成 。
2
种:- 连续(线性)存储:基于数组的存储方式,数据与数据在内存中是相邻的 。
文章插图
- 链式(非线性)存储:以节点的方式非线性存储 。数据与数据在内存中并不一定相邻,结点之间通过存储彼此的地址知道对方的位置 。
文章插图
STL
中常用到的序列式容器对象:vector
:向量,线性存储,类似于数组 。需要包含<vector>
头文件 。list
:双向链表,非线性存储 。需要包含<list>
头文件 。slist
:单向链表,非线性存储 。需要包含<slit>
头文件 。deque
:双向队列 。需要包含<deque>
头文件 。- stack:栈,先进后出 。需要包含
<stack>
头文件 。 queue
:队列,数据先进先出 。需要包含<queue>
头文件 。priority_queue
:优先级队列 。需要包含<queue>
头文件 。
2
种存储方案:- 使用搜索二叉树:容器中的元素依照键值进行排序 。
STL
是用红黑树实现关联容器,红黑树是一种查找效率很高的平衡搜索二叉树 。
文章插图
- 使用哈希表:对键值进行哈希算法,然后根据哈希值把数据存储在不同的单元中 。
文章插图
STL
中常用的关联容器:set
:集合 。包含头文件<set>
。map
:映射 。包含头文件<map>
。multiset
:可重复集合 。包含头文件<set>
。multimap
:可重复映射 。包含头文件<map>
。
- 创建容器 。
- 初始化容器 。初始化时可以指定容器的容量、为容器指定一系列初始值、为容器中的数据指定比较方法……
#include <iostream>#include <vector>#include <algorithm>#include <list>#include <set>using namespace std;//使用结构体作为函数对象int main(int argc, char** argv) {//初始容量为 12 向量容器vector<int> vec(12);cout<<"容器大?。?<<vec.size()<<endl;//初始化长度为 2,且值为 12 、30的向量容器vector<int> vec1 {12,30};cout<<"容器大?。?<<vec1.size()<<endl;//构造整型链表 , 初始容量 34list<int> lst(34);cout<<"容器大?。?<<lst.size()<<endl;//整型数组int ary1[5]= {1,2,3,4,5};//用数组初始化vector<int> vec2(ary1,ary1+5);cout<<"容器大?。?<<vec2.size()<<endl;//用向量初始化链表list<int> intList(vec.begin(),vec.end());cout<<"容器大?。?<<intList.size()<<endl;//用链表初始化集合set<int> intSet(lst.begin(),lst.end());cout<<"容器大?。?<<intSet.size()<<endl;return 0;}
输出结果:文章插图
初始化
map、set
容器时 。//创建并初始化集合set<int> mySet {1,5,3};//构造 map 容器map<std::string, int> myMap;//构造并初始化std::map<std::string, int>myMap{ {"rose",1},{"jone",2} };//输出for (auto iter = myMap.begin(); iter != myMap.end(); ++iter) {cout << iter->first << " " << iter->second << endl;}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 【C++】从零开始的CS:GO逆向分析2——配置GLFW+IMGUI环境并创建透明窗口
- C++自学笔记 Composition:对象组合
- 关于二季度经济情况的概述
- 如何使用westlaw
- 2013年千足金价格多少一克 2013千足金价格多少一克
- 关于平台层和采集层的概述
- 中国饮食文化概论介绍 中国饮食文化概述
- 老人与海主要内容及赏析 老人与海的主要内容概述
- 单位优秀工作总结范文 优秀单位工作总结5篇
- 自动变速器工作原理(一、自动变速器概述 自动变速器的原理是什么