C++ STL——stack和queue
注:原创不易,转载请务必注明原作者和出处,感谢支持!
注:内容来自某培训课程,不一定完全正确!
栈和队列作为经典的数据结构,我们再熟悉不过了。C++ STL为我们提供了它们的实现,分别是stack和queue。
一 stack容器
stack是一种先进后出(First In Last Out)的数据结构,它只有一个出口,stack只允许在栈顶新增元素,移除元素,获得栈顶元素。除了栈顶之外,其它地方不允许存取元素,只有栈顶元素可以被外界使用,也就是说stack不具有遍历行为,没有迭代器。
stack的特性总结如下:栈不能遍历,不支持随机存取,只能通过top从栈顶获取和删除元素。
数据存取
#include <stack>
push();		// 入栈
pop();		// 出栈
top();		// 返回栈顶元素
构造函数
stack<T> s;						// 默认构造函数
stack(const stack<T> &stk);		// 拷贝构造函数
赋值操作
stack<T> &operator=(const stack &stk);	// 重载等号操作符
大小操作
empty();	// 判断栈是否为空
size();		// 返回堆栈的大小
二 queue容器
与栈不同的是,队列是一种先进先出(First In First Out)的数据结构。队列的常用API如下所示。
构造函数
queue<T> q;					// 默认构造函数
queue(const queue &que);	// 拷贝构造函数
数据存取、插入和删除
push(elem);		// 往队尾添加元素
pop();			// 从对头移除第一个元素
back();			// 返回队尾元素
front();		// 返回队首元素
赋值操作
// 重载等号运算符
queue &operator=(const queue &q);
大小操作
empty();	// 判断队列是否为空
size();		// 返回队列的大小
C++ STL——stack和queue的更多相关文章
- C++ STL stack和queue
		C++ STL中独立的序列式容器只有vector,list,deque三种,stack和queue其实就是使用容器适配器对deque进行了封装,使用了新接口. 使用标准库的栈和队列时,先包含相关的头文 ... 
- [STL]deque和stack、queue
		怎么说呢,deque是一种双向开口的连续线性空间,至少逻辑上看上去是这样.然而事实上却没有那么简单,准确来说deque其实是一种分段连续空间,因此其实现以及各种操作比vector复杂的多. 一.deq ... 
- 带你深入理解STL之Stack和Queue
		上一篇博客,带你深入理解STL之Deque容器中详细介绍了deque容器的源码实现方式.结合前面介绍的两个容器vector和list,在使用的过程中,我们确实要知道在什么情况下需要选择恰当的容器来满足 ... 
- C++标准模板类库(STL)之queue初步
		1,STL里有些什么? 包括三个内容:容器.迭代器.算法. 2,容器有哪些? 有stack, vector, queue, deque, list, set, multiset, map, multi ... 
- 容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
		一.容器适配器 stack queue priority_queue stack.queue.priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/d ... 
- Java集合的Stack、Queue、Map的遍历
		Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ... 
- python实现之极简stack和queue
		用python实现一个极简的stack和queue,那是so easy的事情了,简洁易懂,适合小白~ 直接上代码吧: node: class LinkNode: def __init__( self, ... 
- 剑指offer——stack与queue的互相实现
		我们知道,stack和queue是C++中常见的container.下面,我们来探究下如何以stack来实现queue,以及如何用queue来实现stack. 首先,先了解下stack与queue的基 ... 
- 特殊集合(stack、queue、hashtable的示例及练习)
		特殊集合:stack,queue,hashtable stack:先进后出,一个一个的赋值一个一个的取值,按照顺序. .count 取集合内元素的个数 .push() ... 
随机推荐
- 【Struts2】防止表单重复提交
			一.概述 二.Struts2中解决方案 三.实现步骤 一.概述 regist.jsp----->RegistServlet 表单重复提交 危害: 刷票. 重复注册.带来服务器访问压力(拒绝服务) ... 
- 【Java并发】线程安全和内存模型
			一.概述 1.1 什么是线程安全? 1.2 案例 1.3 线程安全解决办法: 二.synchronized 2.1 概述 2.2 同步代码块 2.3 同步方法 2.4 静态同步函数 2.5 总结 三. ... 
- Linux基础篇之FTP服务器搭建(二)
			上一篇文章说到了搭建FTP匿名用户的访问,接下来讲解一下本地用户的登录. 一.首先先建立一个用户,这里举例:xiaoming,并为其设置密码. 二.修改配置文件. 文件:ftpusers 文件:us ... 
- Prometheus 监控 Redis 集群的正确姿势
			Prometheus 监控Redis的正确姿势(redis集群) Prometheus 监控 Redis cluster,其实套路都是一样的,使用 exporter. exporter 负责采集指标, ... 
- CP and Tucker Tensor Decomposition
			1.. 2.. 
- Python&Selenium 数据驱动【unittest+ddt+mysql】
			一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用mysql数据库为数据源作为测试输入 二.SQL脚本 # encoding crea ... 
- 关于Java的Object.clone()方法与对象的深浅拷贝
			文章同步更新在个人博客:关于Java的Object.clone()方法与对象的深浅拷贝 引言 在某些场景中,我们需要获取到一个对象的拷贝用于某些处理.这时候就可以用到Java中的Object.clon ... 
- 箭头函数与定时器的this指向问题
			函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 箭头函数本身没有this,this继承上级的this. 定时器中箭头函数的this指向包含定时器的函数,所以定时器中的箭头函数要 ... 
- Vue入门(一)——环境搭建
			1.参考该教程装vue脚手架和创建工程 https://segmentfault.com/a/1190000008922234 附:在每个工程下cmd,执行npm install,此时工程下会多一个n ... 
- 多线程:Thread类的Join()方法
			多线程:Thread类的Join()方法 http://blog.163.com/hc_ranxu/blog/static/3672318220095284513678/ 当我们在线程B中调用Thre ... 
