STL--stack、queue实现

简介: STL--stack、queue实现

STL中,vector、list 是容器,自己存储一系列的数据进行增删查改,而 stack、queue 是一种特殊的容器,叫容器适配器,提供一种特定的接口来访问底层容器。

STL--stack实现

template<class T, class Container = deque<T>>
  class stack
  {
  public:
    stack()
    {}
    void push(const T& x)
    {
      return _con.push_back(x);
    }
    void pop()
    {
      return _con.pop_back();
    }
    size_t size()
    {
      return _con.size();
    }
    const T& top()
    {
      return _con.back();
    }
    bool empty()
    {
      return _con.empty();
    }
  private:
    Container _con;
  };

STL--queue实现

template<class T,class Container = deque<T>>
  class queue
  {
  public:
    queue()
    {}
    void push(const T& x)
    {
      _con.push_back(x);
    }
    void pop()
    {
      _con.pop();
    }
    const T& front()
    {
      return _con.front();
    }
    const T& back()
    {
      return _con.back();
    }
    size_t size()
    {
      return _con.size();
    }
    bool empty()
    {
      return _con.empty();
    }
  private:
    Container _con;
  };

stack可以使用 vector、list、deque 来适配;queue只能通过 list、deque来适配,因为 queue 的 pop相当于是头删,vector中没有头删这个功能!

容器适配器默认参数 deque

deque叫双端队列,但它不是队列,它的意思是进行头部和尾部插入、删除比较方便。

deque的内部是由多个 buff 子数组和一个中控指针数组,当中控数组满了之后才需要扩容,并且扩容的代价极低(新开空间后,只需要拷贝指针即可)

虽然 deque 也可以进行任意位置的插入和删除,但效率却不是很高。

中间插入删除:当每个 buff数组 一样大,需要整体挪动数据,中间插入删除效率低,但下标的随机访问 [ ] 快很多!因为 当每个buff 数组一样大时,可以直接计算出数据的下标;当每个 buff 数组不一样大时,中间插入删除不需要整体挪动数据,只需要对buff 单独操作即可,但下标的计算将会困难很多!

相关文章
|
关系型数据库 MySQL
Mysql 表分区创建方法
Mysql 表分区创建方法
|
存储 消息中间件 缓存
Redis 命令全解析之 String类型
Redis 命令全解析之 String类型
268 1
|
SQL 关系型数据库 MySQL
|
存储 运维 Oracle
Oracle系列十八:Oracle RAC
Oracle系列十八:Oracle RAC
3451 0
|
存储 C语言
C语言中的指针与函数:深入解析与实战应用
C语言中的指针与函数:深入解析与实战应用
|
Web App开发 监控 安全
WEB测试到移动测试的转换
移动互联网的发展毋庸置疑是必然的趋势,我们曾经传统WEB互联网测试的同学,也必然走上移动测试的道路,移动测试与pc测试到底需要怎样的思维转变才能更快的进入移动节奏呢?对比下WEB与移动的测试不同点: 从测试类型看不同:  测试类型 WEB 移动  交互测试  稍轻 更注重 ,好的体验是移动互联网取胜的关键!  性
1923 0
|
6天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1747 8
|
10天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1636 2
|
11天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
7天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
768 2