当前位置:首页 » 《我的小黑屋》 » 正文

【C++】STL----stack和queue常见用法

20 人参与  2024年09月22日 10:01  分类 : 《我的小黑屋》  评论

点击全文阅读


?个人主页?:孤寂大仙V
?收录专栏?:C++从小白到高手
?往期回顾?:【C++】list常见用法
? 流水不争,争的是滔滔不息。

文章目录

一、stack的介绍stack的使用 二、queue的介绍queue的使用 三、优先级队列(priority_queue)的介绍优先级队列的使用


一、stack的介绍

在 C++ 中,stack 是一种标准模板库(STL)提供的容器适配器,它遵循“后进先出”(LIFO, Last In First Out)的原则。这意味着最后插入的元素最先被访问。stack 是通过底层容器(如 vector 或 deque)实现的。
在这里插入图片描述

在这里插入图片描述

stack的使用

在这里插入图片描述
在这里插入图片描述
构造空的栈

stack<int> s1();

在这里插入图片描述
检测stack是否为空

stack<int> s2;s2.push(1);s2.push(2);s2.push(3);s2.push(4);s2.push(5);if (s2.empty()){cout << "k" << endl;}else{cout << "m" << endl;}

在这里插入图片描述
返回stck中元素的个数

stack<int> s3;s3.push(1);s3.push(2);s3.push(3);s3.push(4);s3.push(5);cout << s3.size() << endl;

在这里插入图片描述
返回栈顶元素的引用

stack<int> s4;s4.push(1);s4.push(2);s4.push(3);s4.push(4);s4.push(5);cout << s4.top() << endl;

在这里插入图片描述
将元素val压入stack中
前面的演示代码都是用的push

stack<int> s4;s4.push(1);s4.push(2);s4.push(3);s4.push(4);s4.push(5);cout << s4.top() << endl;

将stack中尾部的元素弹出

stack<int> s5;s5.push(1);s5.push(2);s5.push(3);s5.push(4);s5.push(5);s5.pop();cout << s5.size() << endl;

弹出栈中的最后一个元素后,这个栈就有四个元素了。
在这里插入图片描述

二、queue的介绍

在C++中,queue 是一个非常有用的容器适配器,它提供了一种先进先出(FIFO, First In First Out)的数据结构。queue 是一种线性数据结构,其中元素的添加(enqueue)发生在队列的一端(称为队尾),而元素的移除(dequeue)发生在另一端(称为队首)。这种特性使得 queue 成为处理一系列需要按顺序处理的任务或事件的理想选择。
在这里插入图片描述

queue的使用

在这里插入图片描述
在这里插入图片描述
构造空的队列

queue<int> q1();

在这里插入图片描述
判断队列是否为空,是返回true,否返回false

queue<int> s7;s7.push(1);s7.push(2);s7.push(3);s7.push(4);s7.push(5);cout << s7.empty() << endl;

在这里插入图片描述
返回队列中有效元素的个数

queue<int> s8;s8.push(1);s8.push(2);s8.push(3);s8.push(4);s8.push(5);cout << s8.size() << endl;

在这里插入图片描述
返回对头元素的引用
返回队尾元素的引用

queue<int> s9;s9.push(1);s9.push(2);s9.push(3);s9.push(4);s9.push(5);cout << s9.front() << endl;cout << s9.back() << endl;

在这里插入图片描述
在队尾将元素val入队列

queue<int> s9;s9.push(1);s9.push(2);s9.push(3);s9.push(4);s9.push(5);

将对头元素出队列

queue<int> s10;s10.push(1);s10.push(2);s10.push(3);s10.push(4);s10.push(5);cout << s10.size() << endl;s10.pop();cout << s10.size() << endl;

出队列前队列里有5个元素,出队列后队列里还有4个元素。
在这里插入图片描述

三、优先级队列(priority_queue)的介绍

优先级队列(Priority Queue)是一种特殊的队列数据结构,它在普通队列的基础上增加了元素优先级的概念。在优先级队列中,每个元素都有一个优先级标签与之关联,优先级最高的元素会最先被移除(出队)。这种数据结构广泛应用于多种算法和场景中,比如任务调度、事件处理、堆排序等。

其实优先级队列就是数据结构中的堆!

优先级队列默认使用 vector 作为其底层存储数据的容器,在 vector 上又使用了堆算法将 vector 中 元素构造成堆的结构,因此 priority_queue 就是堆,所有需要用到堆的位置,都可以考虑使用 priority_queue 。注意:默认情况下 priority_queue 是 大堆 。

优先级队列的使用

在这里插入图片描述
在这里插入图片描述
构造一个空的优先级队列

vector<int> v{ 2,5,3,7,9,10,4,6,8,1 };priority_queue<int> q1;for (auto e : v){q1.push(e);}cout << q1.top() << endl;//默认建大堆

这段代码里面的q1就是构造的空的优先级队列。然后把vector容器中的元素放进去。
在这里插入图片描述
检测优先级队列是否为空,是返回true,否返回false。

vector<int> v{ 2,5,3,7,9,10,4,6,8,1 };priority_queue<int> q2;for (auto e : v){q2.push(e);}cout << q2.empty() << endl;

在这里插入图片描述
返回优先级队列中最大元素,即堆顶元素

vector<int> v{ 2,5,3,7,9,10,4,6,8,1 };priority_queue<int> q1;for (auto e : v){q1.push(e);}cout << q1.top() << endl;//默认建大堆

在这里插入图片描述
在优先级队列中插入元素x

vector<int> v{ 2,5,3,7,9,10,4,6,8,1 };priority_queue<int> q1;for (auto e : v){q1.push(e);}cout << q1.top() << endl;//默认建大堆

把vector容器中的元素放入优先级队列中。
在这里插入图片描述
删除优先级队列中最大元素,即堆顶元素

vector<int> v{ 2,5,3,7,9,10,4,6,8,1 };priority_queue<int> q3;for (auto e : v){q3.push(e);}q3.pop();cout << q3.top() << endl;

删除堆顶元素之前,堆顶元素为10,删除堆顶元素之后优先级列表重新调整,堆顶元素为9.
在这里插入图片描述
注意

默认情况下,priority_queue是大堆。如果在priority_queue中放自定义类型的数据,用户需要在自定义类型中提供> 或者< 的重载。

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/163012.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 全书浏览重生高考填报志愿时我放任全班上大专+后续(叶淼淼宋津年颜禾晚)_重生高考填报志愿时我放任全班上大专+后续(叶淼淼宋津年颜禾晚)全书结局
  • 他的甜撩藏不住附加黎初谢时晏:结局+番外免费品鉴(他的甜撩藏不住)全本浏览阅读连载中
  • 全文他死遁后逼疯清冷女权臣+完结+后续(苏煜顾宛柔)列表_全文他死遁后逼疯清冷女权臣+完结+后续
  • 暑假毕业旅游,班花将我们身份证交给黑导游(江诗晗)全书浏览_暑假毕业旅游,班花将我们身份证交给黑导游全书浏览
  • 重生到高考前,我放任竹马为爱私奔新上热文_裴文远柳雨文远完结版_小说后续在线阅读_无删减免费完结_
  • 雨织离歌浮生浅节选_沈翊鸣苏之雨小姐完整文本_小说后续在线阅读_无删减免费完结_
  • 鬓边不是牡丹红精选(盛惟芳萧既明贺锦)_鬓边不是牡丹红精选盛惟芳萧既明贺锦
  • 宋岑月傅忠焜:结局+番外免费品鉴:结局+番外评价五颗星
  • 桑榆非晚半春休,姜晚榆沈淮遇完本_完本桑榆非晚半春休,姜晚榆沈淮遇
  • 大逃杀游戏老公一千万赌我死人气节选(萧铎纪云笙白茵茵)全书浏览_大逃杀游戏老公一千万赌我死人气节选全书浏览
  • 黎初谢时晏(他的甜撩藏不住)后续+番外精编之作_黎初谢时晏(他的甜撩藏不住)免费在线阅读无删减_笔趣阁
  • 把自己上交国家,龙神崽崽旺全国龙小小小说整本+后续(龙小小)清爽版阅读

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1