C++ -- queue 和 stack模拟实现

简介: C++ – queue 和 stack模拟实现1. queue模拟实现队列是先进先出的特性,这里要支持vector、list、deque等等,这里queue和stack模拟实现,都是直接复用

C++ – queue 和 stack模拟实现

1. queue模拟实现

队列是先进先出的特性,这里要支持vector、list、deque等等,这里queue和stack模拟实现,都是直接复用

1.0 成员变量

template <class T, class Container = list<T>>
Container _container;

1.1 push()

void push(const T& val)
{
  _container.push_back(val);
}

1.2 pop()

void pop()
{
  _container.pop_front();
}

1.3 front()

const T& front()
{
  return _container.front();
}

1.4 back()

const T& back()
{
  return _container.back();
}

1.5 size()

size_t size()
{
  return _container.size();
}

1.6 empty()

bool empty()
{
  return _container.empty();
}
  1. 解释class Container作用

就拿push()来说,_contatiner.push_back(val);假设 _Container是list类型,那么 _container就是list类型,这时 _container直接调用库接口push_back();

1.7 完整代码

namespace my_queue
{
  template <class T, class Container = list<T>>
  class queue
  {
  public:
    void push(const T& val)
    {
      _container.push_back(val);
    }
    void pop()
    {
      _container.pop_front();
    }
    const T& front()
    {
      return _container.front();
    }
    const T& back()
    {
      return _container.back();
    }
    size_t size()
    {
      return _container.size();
    }
    bool empty()
    {
      return _container.empty();
    }
  private:
    Container _container;
  };
}

2. stack模拟实现

2.0 成员变量

template <class T, class Container = vector<T>>
Container _container;

2.1 push()

void push(const T& val)
{
  _container.push_back(val);
}

2.2 pop()

void pop()
{
  _container.pop_back();
}

2.3 top()

const T& top()
{
  return _container.back();
}

2.4 back()

const T& back()
{
  return _container.back();
}

2.5 size()

size_t size()
{
  return _container.size();
}

2.6 empty()

bool empty()
{
  return _container.empty();
}

2.7 完整代码

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









相关文章
|
2月前
|
存储 算法 调度
【C++打怪之路Lv11】-- stack、queue和优先级队列
【C++打怪之路Lv11】-- stack、queue和优先级队列
41 1
|
2月前
|
设计模式 存储 C++
C++之stack 和 queue(下)
C++之stack 和 queue(下)
40 1
|
2月前
|
存储 算法 C语言
【C++】C++ STL探索:Priority Queue与仿函数的深入解析(一)
【C++】C++ STL探索:Priority Queue与仿函数的深入解析
|
2月前
|
C++ 容器
C++之stack 和 queue(上)
C++之stack 和 queue(上)
64 0
|
2月前
|
存储 C++ 容器
C++番外篇——stack、queue的实现及deque的介绍
C++番外篇——stack、queue的实现及deque的介绍
32 0
|
2月前
|
存储 算法 C++
C++入门10——stack与queue的使用
C++入门10——stack与queue的使用
48 0
|
2月前
|
C++
【C++】C++ STL探索:Priority Queue与仿函数的深入解析(三)
【C++】C++ STL探索:Priority Queue与仿函数的深入解析
|
2月前
|
编译器 程序员 C++
【C++】C++ STL探索:Priority Queue与仿函数的深入解析(二)
【C++】C++ STL探索:Priority Queue与仿函数的深入解析
|
1月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
51 2
|
1月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
106 5