注:原创不易,转载请务必注明原作者和出处,感谢支持!

注:内容来自某培训课程,不一定完全正确!

栈和队列作为经典的数据结构,我们再熟悉不过了。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的更多相关文章

  1. C++ STL stack和queue

    C++ STL中独立的序列式容器只有vector,list,deque三种,stack和queue其实就是使用容器适配器对deque进行了封装,使用了新接口. 使用标准库的栈和队列时,先包含相关的头文 ...

  2. [STL]deque和stack、queue

    怎么说呢,deque是一种双向开口的连续线性空间,至少逻辑上看上去是这样.然而事实上却没有那么简单,准确来说deque其实是一种分段连续空间,因此其实现以及各种操作比vector复杂的多. 一.deq ...

  3. 带你深入理解STL之Stack和Queue

    上一篇博客,带你深入理解STL之Deque容器中详细介绍了deque容器的源码实现方式.结合前面介绍的两个容器vector和list,在使用的过程中,我们确实要知道在什么情况下需要选择恰当的容器来满足 ...

  4. C++标准模板类库(STL)之queue初步

    1,STL里有些什么? 包括三个内容:容器.迭代器.算法. 2,容器有哪些? 有stack, vector, queue, deque, list, set, multiset, map, multi ...

  5. 容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例

    一.容器适配器 stack queue priority_queue stack.queue.priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/d ...

  6. Java集合的Stack、Queue、Map的遍历

    Java集合的Stack.Queue.Map的遍历   在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...

  7. python实现之极简stack和queue

    用python实现一个极简的stack和queue,那是so easy的事情了,简洁易懂,适合小白~ 直接上代码吧: node: class LinkNode: def __init__( self, ...

  8. 剑指offer——stack与queue的互相实现

    我们知道,stack和queue是C++中常见的container.下面,我们来探究下如何以stack来实现queue,以及如何用queue来实现stack. 首先,先了解下stack与queue的基 ...

  9. 特殊集合(stack、queue、hashtable的示例及练习)

    特殊集合:stack,queue,hashtable stack:先进后出,一个一个的赋值一个一个的取值,按照顺序. .count           取集合内元素的个数 .push()        ...

随机推荐

  1. Maven基本概念——根目录、项目创建、坐标

    转载来自:https://www.cnblogs.com/zjfjava/p/6817793.html 尊重原创! (一)Maven 基本概念——根目录.项目创建.坐标    1. MavenProj ...

  2. php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法

    php要连接docker中运行的mysql是不能用localhost, 127.0.0.1来连接的,因为每个docker运行容器的localhost 127.0.0.1都是自己容器本身,不是mysql ...

  3. redis cluster(集群)模式的创建方式

    redis常用的架构有三种,单例.哨兵.集群,其他的都说过了,这里只简单介绍集群搭建. 单例最简单没什么好说的. 哨兵之前说过,该模式下有哨兵节点监视master和slave,若master宕机可自动 ...

  4. 03 js事件循环

    1. js里重要的是事件循环. 参考:https://nodejs.org/en/docs/guides/ 中文版:https://github.com/nodejs/nodejs.org/tree/ ...

  5. 2019 ICPC 南昌网络赛I:Yukino With Subinterval(CDQ分治)

    Yukino With Subinterval Yukino has an array a_1, a_2 \cdots a_na1,a2⋯*a**n*. As a tsundere girl, Yuk ...

  6. PyTorch 启程&拾遗

    1..Tensors are similar to NumPy’s ndarrays, with the addition being that Tensors can also be used on ...

  7. Linux的.a、.so和.o文件及链接时的命名

    在说明Linux的.a..so和.o文件关系之前,先来看看windows下obj,lib,dll,exe的关系 windows下obj,lib,dll,exe的关系 lib是和dll对应的.lib是静 ...

  8. centos 最小化安装pycharm

    首先找到安装地址 https://www.jetbrains.com/pycharm/download/#section=linux 选择linux. 打开浏览器的network监视,我用的chrom ...

  9. axios 用 params/data 发送参数给 springboot controller,如何才能正确获取

    今天有人遇到接口调用不通的情况,粗略看了一下是axios跨域请求引起了.找到问题,处理就简单多了. 但是我看其代码,发现比较有意思 export function agentlist(query) { ...

  10. string::begin

    iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; const_ite ...