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

c++栈笔记

一种常见的数据结构,遵循后进先出,先进后出的原则。地址不连续,栈顶(top)

1.常见函数

stack<int> s;定义一个参数类型为int 的栈  名为s
s.push()向栈中插入元素
s.emplace()压栈,无返回值
s.pop()删除栈顶元素
s.top()返回栈顶元素,该元素不出栈
s.empty()判断栈是否为空,是返回 true
s.size()返回栈中元素数量

push( ) 与 emplace( ) 的区别:

首先 s.push() 与 s.emplace() 的最终执行效果是一样的,都是在栈顶加入一个元素,差别就是压栈元素的来源可能不同。

对于包含简单的基本类型的栈来说两者之间几乎没有差别,但当栈的类型是一些大型、复杂的类,具有复杂的构造函数或复制构造函数时,区别就出现了:

push() 接受一个已经存在的元素,并将它的副本附加到容器中。push总是只接受一个参数,即要复制到栈顶中的元素。
emplace() 可以现场通过参数列表创建该类的一个实例放到栈顶。要放置的参数将作为参数转发给栈中所含的类的构造函数。如果类有默认构造函数,emplace 可以有一个参数、多个参数,或者根本没有参数。
例如,当栈的参数是类时,push的参数必须是已实例化的类名作为参数,而 emplace 则可以直接使用类初始化参数现场初始化一个类实例加入栈顶。因此 emplace 的功能比 push 更强大,且兼容 push,但一般使用过程中,使用 push 就足够了。

2.基本操作   

(1)判断是否为空

bool iE(SqStack S){if (S.top==-1)	{return true;}return false;
}

(2)判断栈是否满

bool iF(SqStack S){if (S.top == MAXSIZE - 1)	{return true;}return false;
}

(3)入栈

bool Push(SqStack& S, ElemType e){bool flag = iF(S);if (flag==true)	{printf("栈满\n");return false;}S.top++;S.data[S.top] = e;return true;}

(4)出栈

bool Pop(SqStack& S, ElemType& e){bool flag = iE(S);if (flag)	{printf("栈空\n");return false;}e = S.data[S.top];S.top--;return true;
}

(5)

bool GT(SqStack& S, ElemType& e){bool flag = iE(S);if (flag){return false;}e = S.data[S.top];return true;
}

 优先队列priority_queue

普通队列+优先级排序=优先队列

优先队列按照给定得比较规则默认从大到小进行排序,与普通队列区别于队首元素为top非front

//优先队列展开内容
priority_queue<int,vector<int>,less<int>>q;//大根堆
priority_queue<int,vector<int>,greater<int>>q;//小根堆

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

相关文章:

  • Oracle配置TCPS加密协议测试
  • Jetpack Compose 通过 OkHttp 发送 HTTP 请求的示例
  • Pytorch使用教学3-特殊张量的创建与类型转化
  • 【日记】办个护照不至于有这种刑事罪犯一样的待遇吧……(737 字)
  • 【矩阵微分】在不涉及张量的前提下计算矩阵对向量的导数并写出二阶泰勒展开
  • 数据结构之判断平衡二叉树详解与示例(C,C++)
  • 深入解析仓颉编程语言:函数式编程的核心特性
  • springboot惠农服务平台-计算机毕业设计源码50601
  • Lua脚本简单理解
  • AutoSAR自适应平台架构总览--AP的初认识
  • GPT-4o Mini:探索最具成本效益的小模型在软件开发中的应用
  • {Spring Boot 原理篇} Spring Boot自动装配原理
  • QEMU源码全解析 —— CPU虚拟化(10)
  • 46、PHP实现矩阵中的路径
  • c++笔记2
  • 通过Lua脚本手写redis分布式锁
  • 解析银行个人征信系统
  • AttributeError: ‘list‘ object has no attribute ‘text‘
  • Codeforces Round 874 (Div. 3)(A~D题)
  • [Python][基础语法]详细讲解
  • Layui---输入事件
  • 甄选范文“论软件测试中缺陷管理及其应用”软考高级论文,系统架构设计师论文
  • spring框架实现滑动验证码功能
  • Pytorch使用教学8-张量的科学运算
  • [Spring Boot]登录密码三种加密方式
  • 前端面试项目细节重难点分享(十三)
  • 每天五分钟深度学习:向量化方式完成逻辑回归m个样本的前向传播
  • 以线程完成并发的UDP服务端
  • linux c 特殊字符分割
  • 搭建本地私有知识问答系统:MaxKB + Ollama + Llama3 (wsl网络代理配置、MaxKB-API访问配置)