<C++> STL_stack和queue

1.stack的介绍和使用

1.1 stack的介绍

  1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。

  2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。

  3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:

    • empty:判空操作

    • back:获取尾部元素操作

    • push_back:尾部插入元素操作

    • pop_back:尾部删除元素操作

  4. 标准容器vector、deque、list均符合这些需求,默认情况下,如果没有为stack指定特定的底层容器, 默认情况下使用deque。

在这里插入图片描述

1.2 stack的使用

当你使用 std::stack 时,你可以使用以下一些重要的成员函数:

  1. push(const T& value): 将元素 value 压入栈顶。
  2. pop(): 弹出栈顶元素,不返回其值。
  3. top(): 返回栈顶元素的引用,但不将其从栈中移除。
  4. size(): 返回栈中元素的数量。
  5. empty(): 检查栈是否为空,返回布尔值。
  6. swap(stack& other): 将当前栈与另一个栈 other 进行交换。
#include <iostream>
#include <stack>int main() {std::stack<int> myStack;// 将元素压入栈顶myStack.push(10);myStack.push(20);myStack.push(30);std::cout << "栈顶元素: " << myStack.top() << std::endl; // 输出:30std::cout << "栈的大小: " << myStack.size() << std::endl; // 输出:3myStack.pop(); // 弹出栈顶元素if (!myStack.empty()) {std::cout << "弹出元素后的栈顶元素: " << myStack.top() << std::endl; // 输出:20}std::stack<int> anotherStack;anotherStack.push(50);myStack.swap(anotherStack); // 交换两个栈的内容std::cout << "交换后 myStack 的大小: " << myStack.size() << std::endl; // 输出:1return 0;
}

2.queue的介绍和使用

2.1 queue的介绍

  1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端 提取元素。

  2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的 成员函数来访问其元素。元素从队尾入队列,从队头出队列。

  3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:

    • empty:检测队列是否为空

    • size:返回队列中有效元素的个数

    • front:返回队头元素的引用

    • back:返回队尾元素的引用

    • push_back:在队列尾部入队列

    • pop_front:在队列头部出队列

  4. 标准容器类deque和list满足了这些要求。默认情况下,如果没有为queue实例化指定容器类,则使用标 准容器deque。

2.2 queue的使用

  1. push(const T& value): 将元素 value 添加到队列的尾部。
  2. pop(): 弹出队列的头部元素,不返回其值。
  3. front(): 返回队列头部元素的引用。
  4. back(): 返回队列尾部元素的引用。
  5. size(): 返回队列中元素的数量。
  6. empty(): 检查队列是否为空。
  7. swap(queue& other): 交换两个队列的内容。

示例:

#include <iostream>
#include <queue>int main() {std::queue<int> myQueue;// 向队列尾部添加元素myQueue.push(10);myQueue.push(20);myQueue.push(30);std::cout << "队列头部元素: " << myQueue.front() << std::endl; // 输出:10std::cout << "队列尾部元素: " << myQueue.back() << std::endl;  // 输出:30std::cout << "队列大小: " << myQueue.size() << std::endl;     // 输出:3myQueue.pop(); // 弹出队列头部元素std::cout << "弹出元素后的队列头部元素: " << myQueue.front() << std::endl; // 输出:20std::queue<int> anotherQueue;anotherQueue.push(50);myQueue.swap(anotherQueue); // 交换两个队列的内容std::cout << "交换后 myQueue 的大小: " << myQueue.size() << std::endl; // 输出:1return 0;
}
e.swap(anotherQueue); // 交换两个队列的内容std::cout << "交换后 myQueue 的大小: " << myQueue.size() << std::endl; // 输出:1return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619997.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

layui框架学习(41:表单模块)

之前的文章《layui框架学习》14-16中介绍了通过预设类及部分layui属性设置表单的外观样式&#xff0c;layui中还提供有表单模块以对表单元素进行各类动态化渲染和相关操作&#xff0c;本文学习并记录表单模块form的常用属性、函数及事件的用法&#xff08;如果内容已在之前文章…

利用Fiddler抓取手机APP数据包

Fiddler是一个调试代理&#xff0c;下载地址http://www.telerik.com/download/fiddler 下载安装运行后&#xff0c;查出运行机器的IP&#xff0c;手机连接同一网域内的WIFI&#xff0c;手机WIFI连接设置里的高级里&#xff0c;代理设置填写上Fiddler运行机器的IP&#xff0c;这…

Android系统应用的抓包与防护

最近对抓包这块比较感兴趣&#xff0c;在被问到抓包时的一些问题&#xff1a;证书、单向认证、双向认证怎么处理&#xff0c;以及绕过背后的原理时&#xff0c;一时很难说清个大概&#xff0c;于是整理了下思绪&#xff0c;将这些知识进行总结和整理&#xff0c;末尾再对一个AP…

Fiddler4抓取安卓手机数据包图文教程

目录 1、使用背景2、操作步骤2.1、查看记录Fiddler安装负载机的ip2.2、确保电脑&#xff0c;手机在同一个局域网内2.3、设置fiddler2.4、手机wifi设置 3、开始测试 1、使用背景 测试的时候&#xff0c;有时候需要对某个app进行流量数据抓包&#xff0c;进行测试分析。有很多方…

【Android】利用Fiddler进行抓包详解教程。抓取接口以及数据,可以抓真实安卓手机或者模拟器。

作者&#xff1a;程序员小冰 &#xff08;转载请说明出处&#xff09;博客地址&#xff1a;http://blog.csdn.net/qq_21376985 大家都知道抓包的方法很多。我这里给大家介绍介绍一种&#xff0c;利用fiddler进行抓包&#xff0c;当然比如Wireshark也可以抓包&#xff0c;我们这…

Fiddler安卓手机抓包

简介 Fiddler一个http协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的http通讯&#xff0c;设置断点&#xff0c;查看所有的“进出”Fiddler的数据 下载安装 下载地址: Download Fiddler Web Debugging Tool for Free by Telerik 输入相对应的信息…

安卓手机抓包方式

安卓手机抓包——tcpdump 准备下载tcpdump下载Android SDK Platform-Tools将tcpdump从电脑上copy到手机上修改tcpdump权限运行tcpdump进行抓包 准备 获取手机root权限 下载tcpdump 链接&#xff1a;https://pan.baidu.com/s/11t_ZYnBBRwdTo1w6HLkuLw 提取码&#xff1a;psy0…

Android下的嗅探

很简单啊&#xff01;没想到android也带了linux的tcpdump&#xff0c;可以直接用&#xff0c;哈哈 转载于:https://blog.51cto.com/g0ug0u/412988

fiddler安卓模拟器与ios手机抓包

一.安卓模拟器(雷电模拟器)抓包 1.1fiddler基本配置 1.2导出Fiddler证书 Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop 在桌面上看到导出的FiddlerRoot.cer证书文件 1.3下载和安装openssl openssl下载地址 git终端输入 open…

5 STM32标准库函数 之 外部中断/事件控制器(EXTI)所有函数的介绍及使用

5 STM32标准库函数 之 外部中断/事件控制器&#xff08;EXTI&#xff09;所有函数的介绍及使用 1. 图片有格式2 文字无格式五 库函数之外部中断/事件控制器&#xff08;EXTI&#xff09;所有函数的介绍及使用前言一、图片预览&#xff0c;无格式&#xff08;CSDN&#xff09;二…

变好的方式那么多,我只选认真。

前几天看了高哥的一篇文章&#xff0c;里面提到了高哥从没有把关注公众号的人称为粉丝&#xff0c;而是读者。我觉得这个理解很好啊&#xff0c;和我不谋而合&#xff0c;虽然我没有公开说过&#xff0c;但却是一直把你们当作我的朋友、伙伴。 说句心里话&#xff0c;如果没有你…

不打扰的刷存在感

不打扰是美德&#xff0c;但是缺乏存在感&#xff0c;狂刷存在感又会导致别人的厌烦&#xff0c;以前我没得选&#xff0c;现在我想全都要。 引 说到不打扰&#xff0c;貌似脑壳里面就能够浮现出来有关霓虹国的传说&#xff0c;说他们的「不给别人添麻烦」的文化已经深入骨髓&…

pd.cut()函数--Pandas

1. 函数功能 将连续性数值进行离散化处理&#xff1a;如对年龄、消费金额等进行分组 2. 函数语法 pandas.cut(x, bins, rightTrue, labelsNone, retbinsFalse, precision3, include_lowestFalse, duplicatesraise, orderedTrue)3. 函数参数 参数含义x要离散分箱操作的数组&…

微信小程序 基于Android的美容理发师预约管理系统

&#xff0c;本系统主要根据管理员、用户及理发师的实际需要&#xff0c;方便用户利用互联网实现对商品信息进行立即订购&#xff0c;同时让管理者可以通过这个系统对用户实际需求以及各信息进行管理。设计该系统主要目的是为了方便用户、理发师可以有一个非常好的平台体验&…

mysql中delete怎么用_mysql怎么使用delete

MySQL中的delete语句一般用于删除表的一行或者多行数据。 以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句] DELETE FROM table_name [WHERE Clause]:指定要删除数据的表名。 ORDER BY 子句:可选项。表示…

DELETE 语句

SQL DELETE 作用 DELETE 语句用于删除表中的记录。 SQL DELETE 语法 DELETE FROM table_name WHERE some_columnsome_value; 请注意 SQL DELETE 语句中的 WHERE 子句&#xff01; WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句&#xff0c;所有的记…

Android studio 软件git使用

在 test 分支添加的方法 , 现在切换到 master分支 总共 2 个分支 , 当前的分支是 test 出现了 先试一下 force checkout , 尝试之后发现 , 你更改没有带过来 , 以为哪个类在master分支没有 , 所以这边也没有 , 切回分支 test 发现之前的跟改没有 , 这样即可以找回 继续切换…

mysql sql delete语句_SQL Delete语句

在本教程中,您将学习如何使用SQL DELETE语句删除表中的一行或多行。 1. SQL DELETE语句简介 要从表中删除一行或多行,请使用DELETE语句。 DELETE语句的一般语法如下: DELETE FROM table_name WHERE condition; 首先,提供要删除行的表名称(table_name)。 其次,在WHERE子句中…

DELETE语句

语法介绍 &#xff08;1&#xff09;如果我们想在SQL数据库中删除某一条数据&#xff0c;我们该怎样删除&#xff1f; Delete&#xff1a;删除 语法如下&#xff1a; 1&#xff0e;删除某一行数据 Delete from 表名称 Where 字段名 表值 2.删除整个表的数据 Delete fro…

delete用法解析

使用delete语句一次只能删除整行记录&#xff0c;不能删除某个字段。 &#xff08;属于DML 语句会有提示是否删除&#xff09;。 delete只会删除记录&#xff0c;不会删除表。 注&#xff1a; 如果要删除整张表&#xff0c;需要使用drop table命令。 如果要一次性清楚表中的数…