0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

c++之栈和队列

嵌入式技术 ? 来源:嵌入式技术 ? 作者:嵌入式技术 ? 2023-07-15 08:50 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.stack容器

stack ,栈(堆栈),是一种先进后出(First In Last Out,FILO)的数据结构,先插入的数据在栈底,后放入的数据在栈顶,所有的数据只能从栈顶取出。

在生活中先进后出的例子友很多,例如我们在桌子上摞书,先放的在最下面,后放的在最上面。在取书的时候也是先取最后放的,最才能取到第一个放的。

wKgZomSxO8eAeVP5AAPtT7ckrTE867.png

在栈容器中,只有栈顶数据才可以被外界访问,因此stack不存在遍历。

2.栈容器使用示例

  • stack(栈)容器特性:

先进后出(后进先出) --类似与往袋子中装东西,先放进去的在最下面,最后放进行的可以先拿出来;第一个放进去的 --->栈底

最后一个放进的 --->栈顶

stack只允许从栈顶取数据

stack容器无法对数据进行排序sort,但可以判断容器是否为空empty,可以计算元素的个数size;

  • 相关函数:
stack构造函数:
	stack stk; //默认构造
	stack(const stack &p);//拷贝构造
stack赋值
	operator=() --运算符号重载
stack入栈与出栈:
	push() -->入栈
	emplace() -->入栈(在容器尾部插入元素)
	pop() --->出栈
	top() -->查看栈顶元素
	empty() -->判断容器是否为空
	size()  -->获取元素个数
	swap -->交换元素

使用示例:

#include 
#include 
using namespace std;
void test()
{
	//创建一个stack容器
	stack stk;
	//入栈
	stk.push(10);
	stk.push(20);
	stk.push(30);
	stk.push(40);
	stk.emplace(100);
	stackstk3(stk);//拷贝构造
	cout stk2 = stk;//赋值
	if (stk2.empty())
	{
		cout 
wKgaomSxPPiAf6wEAAPPMhfoUIQ563.png

3.queue容器

队列(queue 和堆栈相似,是一种可以存取的数据结构,不同的是队列的存取是在两个不同的方向进行的,因此其主要特征是先进先出(First-in-first-out,FIFO),类似于我们生活中的水管。

wKgaomSxPaOAIMV_AAQVau97g90678.png

4.queue容器使用示例

队列只需要从对尾插入数据(入队,push_back),对头取数据(出队,pop_front);

队列只能访问对头和队尾数据,其他数据需要出队才能访问,所以不存在遍历队列;

返回队列头数据:front()

返回队列尾数据:back()

  • 相关函数:
队列构造函数:
	queue que; //队列通过类模板实现,默认构造函数
	queue(const queue &p);
	operator=(queue &p)  -->运算符重载
相关成功函数:
	入队:push()
	出队:pop()
获取队列头数据:front();
获取队列尾数据:back();
判断队列是否为空:empty();
获取队列中元素个数:size();
互换元素:swap();

使用示例:

#include 
#include 
using namespace std;
void test()
{
	queue q;
	//入队
	q.push(10);
	q.push(20);
	q.push(30);
	q.emplace(40);//从队列尾插入数据
	cout 
wKgZomSxPmGACvvMAAPMCRBNWzc279.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    22

    文章

    2119

    浏览量

    75399
  • 数据结构
    +关注

    关注

    3

    文章

    573

    浏览量

    40777
  • 队列
    +关注

    关注

    1

    文章

    46

    浏览量

    11091
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C++STL算法(二)

    C++STL算法(二)
    的头像 发表于 07-18 14:49 ?1892次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>STL算法(二)

    c++STL算法(三)

    c++STL算法(三)
    的头像 发表于 07-18 15:00 ?2182次阅读
    <b class='flag-5'>c++</b><b class='flag-5'>之</b>STL算法(三)

    队列C++中的queue详解

    队列就是一种线性的数据结构,它与日常生活中排队的队列相似,即先进先出(LIFO, First In First Out),这点也是它与(Stack)的最大不同之处。
    的头像 发表于 07-18 17:31 ?2268次阅读
    <b class='flag-5'>队列</b>与<b class='flag-5'>C++</b>中的queue详解

    C++文件操作

    C++文件操作
    的头像 发表于 07-21 10:52 ?1419次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>文件操作

    队列

    队列:1、队列定义:限定仅只能在表尾端进行插入和删除的线性表。顶:表尾端被称之为顶。
    发表于 08-13 13:50 ?0次下载

    你还会手写队列队列的基本实现程序说明

    昨天跟一个CSDN上的朋友聊天,他说现在如果让他自己手写一个或者队列,估计都要写蛮久的,平时虽然都在用,但是都是别人封装好的集合。确实,经典的数据结构,包括排序算法,虽然我们平时不用手写了,但是
    的头像 发表于 11-11 11:34 ?3006次阅读

    深入浅出了解单调和单调队列

    袁厨携袁记菜馆全体工作人员祝大家在新的一年,健健康康,开开心心。发量暴增,钱包超大。 哎,元旦假期结束了,又要继续搬砖了,我们接着做题吧,今天我们好好说说单调和单调队列。其实很容易理解,单调就是
    的头像 发表于 02-02 10:18 ?1769次阅读
    深入浅出了解单调<b class='flag-5'>栈</b>和单调<b class='flag-5'>队列</b>

    队列实现原理是什么?队列实现方案有哪几种?

    是一种后进先出的数据结构,而队列是一种先进先出的数据结构,两者原理不难理解,使用也简单。
    的头像 发表于 07-04 13:28 ?3053次阅读
    <b class='flag-5'>队列</b>实现<b class='flag-5'>栈</b>原理是什么?<b class='flag-5'>队列</b>实现<b class='flag-5'>栈</b>方案有哪几种?

    简述Labview使用队列的区别

    简述Labview使用队列的区别
    发表于 01-19 09:50 ?11次下载

    C++设计新思维-泛型编程与设计应用

    C++设计新思维-泛型编程与设计应用
    发表于 11-16 15:59 ?3次下载

    C++学习笔记c++的基本认识

    自这篇文章我们即将开始C++的奇幻之旅,其内容主要是读C++ Primer的总结和笔记,有兴趣可以找原版书看看,对于学习C++还是有很大帮助的。这篇文章将从一个经典的程序开始介绍C++
    的头像 发表于 03-17 13:57 ?991次阅读

    利用C++提供的队列封装一个消息队列

    最近的C++项目中,需要用到消息队列,但是C++中又没有原生的消息队列,就在网上找了一下相关资料,利用C++提供的
    的头像 发表于 05-20 15:16 ?2339次阅读
    利用<b class='flag-5'>C++</b>提供的<b class='flag-5'>队列</b>封装一个消息<b class='flag-5'>队列</b>

    数据结构队列,串介绍

    队列不再过多描述,了解入规则,入队出队规则,的递归应用即可,面试肯定不会考这种概念,太简单。
    的头像 发表于 05-26 14:35 ?754次阅读
    数据结构<b class='flag-5'>之</b><b class='flag-5'>栈</b>,<b class='flag-5'>队列</b>,串介绍

    两个实现一个队列方法

    队列是比较基础的数据结构。无论在工作中,还是在面试中,队列都用的比较多。在计算机的世界,你会看到队列
    的头像 发表于 10-08 15:54 ?1107次阅读

    C++之父新作带你勾勒现代C++地图

    为了帮助大家解决这些痛点问题,让大家领略现代C++美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他亲自操刀写就了这本《
    的头像 发表于 10-30 16:35 ?1313次阅读
    <b class='flag-5'>C++</b>之父新作带你勾勒现代<b class='flag-5'>C++</b>地图