当前位置: 首页 > news >正文

C++回顾(二十二)—— stack容器 与 queue容器

22.1 stack容器

(1) stack容器简介

  • stack是堆栈容器,是一种“先进后出”的容器。
  • stack是简单地装饰deque容器而成为另外的一种容器。
  • 添加头文件:#include <stack>

(2)stack对象的默认构造

  • stack采用模板类实现, stack对象的默认构造形式: stack stkT;
    stack <int> stkInt; //一个存放int的stack容器。
    stack <float> stkFloat; //一个存放float的stack容器。
    stack <string> stkString; //一个存放string的stack容器。

    //尖括号内还可以设置指针类型或自定义类型。

(3)stack的push()与pop()方法

  • stack.push(elem); //往栈头添加元素
  • stack.pop(); //从栈头移除第一个元素

(4)stack对象的拷贝构造与赋值

  • stack(const stack &stk); //拷贝构造函数
  • stack& operator=(const stack &stk); //重载等号操作符

(5)stack的数据存取

  • stack.top(); //返回最后一个压入栈元素

(6)stack的大小

  • stack.empty(); //判断堆栈是否为空
  • stack.size(); //返回堆栈的大小

完整示例代码:

#include <iostream>
#include <stack>
#include <stdlib.h>
#include <time.h>using namespace std;int main()
{stack<int> s;srand(time(NULL));int num;for (int i = 0; i < 10; i++){num = rand() % 10;s.push(num);cout << num << "进栈成功" << endl;}cout << "********************" << endl;cout << "栈顶元素是 " << s.top() << endl;cout << "栈的大小" << s.size() << endl;//栈和队列不存在遍历,不存在迭代器//s.begin();cout << "********************" << endl;while (!s.empty()){cout << s.top() << "出栈" << endl;s.pop();}return 0;
}

运行结果:
在这里插入图片描述

22.2 queue容器

(1)queue容器简介

  • queue是队列容器,是一种“先进先出”的容器。
  • queue是简单地装饰deque容器而成为另外的一种容器。
  • 需要添加头文件:#include <queue>

(2)queue对象的默认构造

  • queue采用模板类实现,queue对象的默认构造形式:queue queT; 如:
    queue<int> queInt; //一个存放int的queue容器。
    queue<float> queFloat; //一个存放float的queue容器。
    queue<string> queString; //一个存放string的queue容器。

    //尖括号内还可以设置指针类型或自定义类型。

(3)queue的push()与pop()方法

  • queue.push(elem); //往队尾添加元素
  • queue.pop(); //从队头移除第一个元素

(4)queue对象的拷贝构造与赋值

  • queue(const queue &que); //拷贝构造函数
  • queue& operator=(const queue &que); //重载等号操作符

(5)queue的数据存取

  • queue.back(); //返回最后一个元素
  • queue.front(); //返回第一个元素

(6)queue的大小

  • queue.empty(); //判断队列是否为空
  • queue.size(); //返回队列的大小

完整示例代码:

#include <iostream>
#include <queue>using namespace std;int main()
{queue<int> q;for (int i = 0; i < 10; i++){q.push(i);cout << i << "进队成功" << endl;}cout << "********************" << endl;cout << "队头元素" << q.front() << endl;cout << "队尾元素" << q.back() << endl;cout << "队列大小" << q.size() << endl;cout << "********************" << endl;while (!q.empty()){cout << q.front() << "出队" << endl;q.pop();}return 0;
}

运行结果:
在这里插入图片描述

http://www.lryc.cn/news/38108.html

相关文章:

  • 逻辑优化基础-disjoint support decomposition
  • 保姆级使用PyTorch训练与评估自己的DaViT网络教程
  • Java8新特性:Stream流处理使用总结
  • Java基准测试工具JMH高级使用
  • 问心 | 再看token、session和cookie
  • Ubuntu 安装 CUDA and Cudnn
  • 【漏洞复现】Grafana任意文件读取(CVE-2021-43798)
  • 磨金石教育摄影技能干货分享|春之旅拍
  • 中断以及 PIC可编程中断控制器
  • SecureCRT 安装并绑定ENSP设备终端
  • ESP32设备驱动-TCS3200颜色传感器驱动
  • < JavaScript小技巧:Array构造函数妙用 >
  • 【17】组合逻辑 - VL17/VL19/VL20 用3-8译码器 或 4选1多路选择器 实现逻辑函数
  • 2023年全国最新二级建造师精选真题及答案19
  • Java中的 this 和 super
  • ESP32设备驱动-红外寻迹传感器驱动
  • 初识BFC
  • 随想录二刷Day17——二叉树
  • Weblogic管理控制台未授权远程命令执行漏洞复现(cve-2020-14882/cve-2020-14883)
  • STM32F103CubeMX定时器
  • 多态且原理
  • 动态库(二) 创建动态库
  • opencv加水印
  • Flume基操
  • 图文详解红黑树,还有谁不会?
  • 多目标遗传算法NSGA-II原理详解及算法实现
  • Spark 键值对RDD的操作
  • 【SpringCloud】SpringCloud详解之Feign远程调用
  • 文档团队怎样使用GIT做版本管理
  • 【java】Java中-> 是什么意思?