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 单独操作即可,但下标的计算将会困难很多!

相关文章
|
6月前
|
存储 算法 C++
C++初阶--queue和stack
C++初阶--queue和stack
|
4月前
|
设计模式 算法 Java
【c++】STL之stack和queue详解
【c++】STL之stack和queue详解
49 1
|
4月前
|
存储 调度 C++
|
存储 设计模式 C++
C++ STL stack & queue
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。
|
6月前
|
编译器 C++ 容器
STL常用之vector,list,stack,queue,deque总结与对比
STL常用之vector,list,stack,queue,deque总结与对比
|
11月前
|
C++ 容器
STL中stack和queue的使用以及模拟实现
STL中stack和queue的使用以及模拟实现
58 0
|
存储 算法 程序员
stack、queue、priority_queue的使用和简单实现【STL】
stack、queue、priority_queue的使用和简单实现【STL】
61 0
|
设计模式 C++ 容器
C++【STL】之stack和queue学习
C++ STL stack和queue常用接口和模拟实现详细讲解,干货满满!
106 0
C++【STL】之stack和queue学习
|
设计模式 C++ 容器
C++STL——stack与queue
C++STL——stack与queue
|
存储 设计模式 算法
【STL】stack、queue、priority_queue模拟实现
一. deque简单介绍 1.1 deque的功能介绍 deque(双端队列