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

代码随想录二刷 |栈与队列 |理论基础

代码随想录二刷 |栈与队列 |理论基础

    • 常用操作
  • 队列
    • 常用操作

栈与队列是C++标准库中的两个数据结构。

先进后出,提供 push 和 pop 等接口,所有元素必须符合先进后出的原则,所以栈不提供走访功能,也不提供迭代器(iterator)。 不像是set 或者map 提供迭代器iterator来遍历所有元素。

栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。

所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。

我们常用的SGI STL,如果没有指定底层实现的话,默认是以deque为缺省情况下栈的底层结构。deque是一个双向队列,只要封住一段,只开通另一端就可以实现栈的逻辑了。

在这里插入图片描述
如图所示,栈先进后出。

我们也可以指定vector为栈的底层实现,初始化语句如下:

std::stack<int, std::vector<int> > third;  // 使用vector为底层容器的栈

常用操作

stack<int> st;
int x;// 1. 将 x 压入栈
st.push(x);// 2. 删除栈顶元素
st.pop();// 3. 返回栈顶元素
st.top();// 4. 返回栈中元素的数量
st.size();// 5.检查栈是否为空,若为空返回 true,否则返回 false
st.empty();

队列

队列是先进先出的数据结构,同样不允许有遍历行为,不提供迭代器, SGI STL中队列一样是以deque为缺省情况下的底部结构。
在这里插入图片描述

常用操作

queue<int> que;
int x;// 1. 在队尾插入一个元素
que.push(x);// 2. 删除队列第一个元素
que.pop();// 3. 返回队列中元素的个数
que.size();// 4. 如果队列为空返回 true,否则返回 false
que.empty();// 5. 返回队列中的第一个元素
que.front();// 6. 返回队列中最后一个元素
que.back();

也可以指定list 为起底层实现,初始化queue的语句如下:

std::queue<int, std::list<int>> third; // 定义以list为底层容器的队列
http://www.lryc.cn/news/253112.html

相关文章:

  • java--接口概述
  • 出海风潮:中国母婴品牌征服国际市场的机遇与挑战!
  • 一文读懂MongoDB的知识点(3),惊呆面试官。
  • ssm的“魅力”西安宣传网站(有报告)。Javaee项目。
  • 怎么让SecureCRT不自动断开连接
  • 介绍几种Go语言开发的IDE
  • 1、设计模式简介(7大原则,3大类)
  • 华为鲲鹏+银河麒麟V10编译FreeSWITCH1.10.9
  • CFS三层靶机内网渗透
  • 软件分享--智能照片识别分类软件
  • Leetcode—409.最长回文串【简单】
  • 计算机网络入侵检测技术研究
  • 深入学习锁--Synchronized各种使用方法
  • pycharm中绘制一个3D曲线
  • 人工智能_AI服务器安装清华开源_CHATGLM大语言模型_GLM-6B安装部署_人工智能工作笔记0092
  • 用户反馈组件实现(Vue3+ElementPlus)含图片拖拽上传
  • K8S部署nginx并且使用NFS存储数据
  • Homework 3: Higher-Order Functions, Self Reference, Recursion, Tree Recursion
  • (C++)有效三角形的个数--双指针法
  • 11.30BST理解,AVL树操作,定义;快速幂,二分求矩阵幂(未完)
  • 深入理解Java核心技术:Java工程师的实用干货笔记
  • 大学里面转专业介绍
  • MySQL_1. mysql数据库介绍
  • TimeGPT:时间序列预测模型实例
  • 【JavaEE】多线程 (1)
  • linux 应用层同步与互斥机制之条件变量
  • 3.5毫米音频连接器接线方式
  • 智慧农田可视化大数据综合管理平台方案,EasyCVR助力农业高质量发展
  • python超详细基础文件操作【建议收藏】
  • 华为变革进展指数TPM的五​个级别:试点级、推行级、功能级、集成级和世界级