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

stack底层实现细节

一、stack 和 queue

在 STL 中 stack 和 queue 已经不算是容器了,而是容器适配器,适配器模式也是常用的模式之一,体现在 stack 和 queue 中就是他们两个的实现不是单独写的,而是复用了前面合适的优秀的STL 容器的代码而实现的具有 stack 和 queue 特点的容器。

二、部分代码展示

#pragma once
#include<vector>
#include<list>
using namespace std;
namespace bit
{// 适配器模式:封装前面已有的优秀容器实现栈// 模板参数也可以默认,这里默认容器适配器是vector,即复用vector实现stack// queue用list,vector头删效率低template<class T, class Container = vector<T>>class stack{public:void push(const T& x){_con.push_back(x);}void pop(){_con.push_back();}size_t size(){return _con.size();}bool empty(){return _con.empty();}T& top(){return _con.back();}private:Container _con;};
}

适配器模式在这里说白了就是用模板来复用 vector 或 list 来实现 stack 的后进先出。

三、vector list deque

容器优点缺点
vector随机访问效率高头删效率低,扩容有消耗
list插入删除效率高访问效率低
deque兼容 vector list 优点优点都不极致

deque 支持随机访问,头插头删尾插尾删,但是效率都不够极致。

结构是有一组中控指针数组存放这每一个小数组的指针,可以较快访问,插入,删除。

上面 stack 我们用 vector 和 list 适配,在 STL 中是用 deque 适配

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

相关文章:

  • 工业相机 SDK 二次开发-Halcon 插件
  • map和set的使用(一)详解
  • ARP 表、MAC 表、路由表、跨网段 ARP
  • 37.构造回文字符串问题|Marscode AI刷题
  • ssm-mybatisPlus学习笔记
  • 【算法学习笔记】35:扩展欧几里得算法求解线性同余方程
  • 线性规划:机器学习中的优化利器
  • Ubuntu开发中的问题
  • MAC 地址转换为标准大写格式
  • 使用插件SlideVerify实现滑块验证
  • 深入探索 Nginx 的高级用法:解锁 Web 服务器的强大潜能
  • (01)搭建开发环境
  • Win11桌面右键刷新选项在二级界面的修正方法
  • 配电室防静电地板通常用哪种
  • 【重庆市乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移内容测评
  • 68,[8] BUUCTF WEB [RoarCTF 2019]Simple Upload(未写完)
  • Windows电脑桌面记录日程安排的提醒软件
  • TiDB与Oracle:数据库之争,谁能更胜一筹?
  • USART_串口通讯中断案例(HAL库实现)
  • 【MySQL】存储引擎有哪些?区别是什么?
  • [OpenGL]实现屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion, SSAO)
  • linux-NFS网络共享存储服务配置
  • w-form-select.vue(自定义下拉框组件)
  • ovs实现lb负载均衡
  • 机器学习-核函数(Kernel Function)
  • 计算最接近的数
  • 【QNX】QNX侧查看内存信息的方法
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250121
  • AutoSar架构学习笔记
  • 2024年智慧消防一体化安全管控年度回顾与2025年预测