前言
由于本文涉及内容比较多,为了尽可能的讲详细些,会把各种例子附上,所以代码样例会比较多,也为了更好的布局,本系列将分开讲解,并且前期为了更加贴合实战需求,暂时只对一些常用的STL容器和基本功能进行讲解。
为了使每篇文章具有一定的独立性,后续的文章大多数会将之前文章涉及的知识点中提取,并且在后续会将相应的例子补上。
本文STL系列知识参考《C++语言程序涉及(第5版)》
STL指南
- 容器的基本功能与分类
- 顺序容器
- 关联容器
顺序容器的适配器(stack、queue、priority_queue)
S是一种容器适配器类型,设s1,s2是S的两个实例,t是T类型的一个实例
注意事项
适配器不支持迭代器,因为它们不允许对任意元素进行访问
对于栈来说,只有栈顶元素是可以访问的
对于队列来说,只有队头和队尾的元素是可以访问的
stack
适配器共性
1.s1 op s2
op可以是==
,!=
,<
,<=
,>
,>=
它会对两个适配器之间的元素按字典序进行比较
2.s.size()
返回s的元素个数
3.s.empty()
返回s是否为空
4.s.push(t)
将元素t压入到s中
5.s.pop()
将一个元素从s中弹出
对于栈来说,每次弹出的是最后被压入的元素
对于队列,每次弹出的是最先被压入的元素
特有函数
1.s.top()
返回栈顶元素的引用
queue
适配器共性
1.s1 op s2
op可以是==
,!=
,<
,<=
,>
,>=
它会对两个适配器之间的元素按字典序进行比较
2.s.size()
返回s的元素个数
3.s.empty()
返回s是否为空
4.s.push(t)
将元素t压入到s中
5.s.pop()
将一个元素从s中弹出
对于栈来说,每次弹出的是最后被压入的元素
对于队列,每次弹出的是最先被压入的元素
特有函数
1.s.front()
返回队头元素的引用
2.s.back()
返回队尾元素的引用
priority_queue
弹出顺序与压入顺序无关,每次弹出的总是容器中最“大”的那个元素
并且没有比较运算符
当容器时类、结构体这样的复合数据类型时,“<”运算符必须有定义(即需要重载运算符),优先队列在默认情况下根据“<”运算符决定元素大小
特有函数
1.s.top()
返回栈顶元素的引用
2.s.size()
返回s的元素个数
3.s.empty()
返回s是否为空
4.s.push(t)
将元素t压入到s中
5.s.pop()
将一个元素从s中弹出
对于栈来说,每次弹出的是最后被压入的元素
对于队列,每次弹出的是最先被压入的元素