C++STL(四):stack和queue的模拟实现
C++STL(四):stack和queue的模拟实现
容器适配器
什么是容器适配器
- 适配器是一种设计模式(设计模式是一套被反复使用的,多数人知晓的,经过分类编目的,代码设计经验的总结),该种模式将一个类的接口转换成用户需要的另外一个接口。
容器适配器:以某种已有的既定容器作为底层结构,在其基础上进一步地进行封装接口函数,使其可以满足某种特性
STL六大组件中配接器中的stack,queue,priority_queue就是通过封装其他容器实现的
stack的模拟实现
成员函数 | 函数作用 | 实现方法 |
---|---|---|
push | 元素入栈 | 调用所指定容器的push_back |
pop | 元素出栈 | 调用所指定容器的pop_back |
top | 获取栈顶元素 | 调用所指定容器的back |
size | 获取栈中有效元素个数 | 调用所指定容器的size |
empty | 判断栈是否为空 | 调用所指定容器的empty |
swap | 交换两个栈中的数据 | 调用所指定容器的swap |
#pragma once
#include<iostream>
#include<list>
#include<vector>
#include<deque>
namespace pjy
{
template<class T,class Container=deque<T> >
class stack
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_back();
}
T& top()
{
return _con.back();
}
bool empty()
{
return _con.empty();
}
size_t size()
{
return _con.size();
}
private:
Container _con;
};
}
stack的模拟实现
成员函数 | 函数作用 | 实现方法 |
---|---|---|
push | 队尾入队列 | 调用所指定容器的push_back |
pop | 队尾出队列 | 调用所指定容器的pop_back |
front | 获取队头元素 | 调用所指定容器的front |
top | 获取队尾元素 | 调用所指定容器的back |
size | 获取栈中有效元素个数 | 调用所指定容器的size |
empty | 判断队列是否为空 | 调用所指定容器的empty |
swap | 交换两个队列的数据 | 调用所指定容器的swap |
#pragma once
#include<list>
#include<vector>
#include<deque>
namespace bit
{
template<class T, class Container = deque<T>>
class Queue
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_front();
}
const T& front()
{
return _con.front();
}
const T& back()
{
return _con.back();
}
bool empty()
{
return _con.empty();
}
size_t size()
{
return _con.size();
}
private:
Container _con;
};
}