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

stack_queue:三个关键注意事项解析

一、stack与容器

template<class T, class Container>
class stack
{
private:Container _con;
};

Container 为容器,在实例化创建对象时,我们可以传 vector<T>list<T> 等作为栈的底层。

举例:

int main()
{stack<int, vector<int>> st1;stack<int, list<int>> st2;return 0;
}

二、queue 和 priority_queue 的底层封装

  • queue 不支持用 vector 封装

queue 的原则是先进先出,使用过程中存在大量“头删”——pop_front(),用 vector 进行封装效率太低,故通常借助 list 进行模拟实现

  • priority_queue 不支持用 list 封装

优先队列 priority_queue 的本质是“堆”(默认建大堆),在插入和删除时,通常会涉及向上调整建堆向下调整建堆的方法——大量 [] 重载的使用。

list 不支持 [] 的重载,故 priority_queue 不支持底层使用 list。

三、仿函数

在C++中,仿函数通常是一个类或结构体,在类中通过重载 operator() 实现,其实例化对象可以像函数一样被调用

less<T> 就是一个仿函数——从根往叶子节点看,数值/优先级 越来越小,因此默认为大堆;如果我们传 greater<T> —— 从根往叶子节点看,数值/优先级 越来大,则建小堆。

	template<class T>class less{public:bool operator()(const T& a, const T& b){return a > b;}};template<class T>class greater{public:bool operator()(const T& a, const T& b){return a < b;}};

因为要建大堆,当子节点的数值/优先级比父节点大时——_con[child] > _con[parent],要将子节点向上调整

相关文章:

  • Mac M1使用PD虚拟机运行win10弹出“内部版本已过期立即安装新的windows内部版本”
  • 手机云控制发电机组 有网络随时随地操控监控运行
  • 【劳德巴赫 Trace32 高阶系列 3 -- trace32 svf 文件操作命令】
  • 场效应管学习笔记
  • 基于SpringBoot Vue学生成绩管理系统
  • 【Kafka】服务器Broker与Controller详解
  • 【unity小技巧】FPS简单的射击换挡瞄准动画控制
  • 如何确定子网地址(范例)?
  • 【论文解读】Collaboration Helps Camera Overtake LiDAR in 3D Detection
  • C++:this隐藏参数
  • anaconda离线安装包的方法
  • 海康威视有插件、无插件播放;webrtc直播;西瓜视频播放器;mpegts.js直播;flvjs直播
  • Map和Set的封装
  • 【algorithm】一个简单的PID工程 base 用于手生时候快速复习 用于设计模式 cpp语法八股 快速复习校验
  • 电脑怎么录屏?打造专业级视频内容!
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0基础学习移动端适配
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • DataBase in Android
  • express + mock 让前后台并行开发
  • Java|序列化异常StreamCorruptedException的解决方法
  • k8s 面向应用开发者的基础命令
  • Linux中的硬链接与软链接
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Markdown 语法简单说明
  • PV统计优化设计
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SQLServer之创建显式事务
  • 百度小程序遇到的问题
  • 来,膜拜下android roadmap,强大的执行力
  • 聊聊flink的TableFactory
  • 小程序 setData 学问多
  • 移动端解决方案学习记录
  • 在Unity中实现一个简单的消息管理器
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • # 数论-逆元
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Micro Framework初体验
  • .net mvc部分视图
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 常见的偏门问题
  • .net 后台导出excel ,word
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET成年了,然后呢?
  • .net专家(高海东的专栏)
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Android Pro] AndroidX重构和映射
  • [CF543A]/[CF544C]Writing Code
  • [CISCN 2019华东南]Web11