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 表分区创建方法
|
存储 运维 Oracle
Oracle系列十八:Oracle RAC
Oracle系列十八:Oracle RAC
3473 0
|
存储 消息中间件 缓存
Redis 命令全解析之 String类型
Redis 命令全解析之 String类型
274 1
|
存储 C语言
C语言中的指针与函数:深入解析与实战应用
C语言中的指针与函数:深入解析与实战应用
|
SQL 关系型数据库 MySQL
|
Web App开发 监控 安全
WEB测试到移动测试的转换
移动互联网的发展毋庸置疑是必然的趋势,我们曾经传统WEB互联网测试的同学,也必然走上移动测试的道路,移动测试与pc测试到底需要怎样的思维转变才能更快的进入移动节奏呢?对比下WEB与移动的测试不同点: 从测试类型看不同:  测试类型 WEB 移动  交互测试  稍轻 更注重 ,好的体验是移动互联网取胜的关键!  性
1927 0
|
13天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
13天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
12天前
|
IDE 开发工具
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
Qoder国际版上线全新内置大模型Sonus(/ˈsoʊnəs/),全球领先,专精超长任务执行与电脑操作(Computer Use)。配合Qoder桌面端0.2.3版本,可自主完成编程、金融建模、科研及表格制作等复杂工作。现全面支持Qoder全系产品,效率提升3.2倍。
1513 8
Qoder 上线 Sonus 模型,Computer Use 能力全面增强