✨✨小新课堂开课了,欢迎欢迎~✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏:C++:由浅入深篇
小新的主页:编程版小新-CSDN博客
前言:
我们已将了解了 stack和queue的使用,几天就来看一下模拟实现吧。
C++初阶:STL详解(八)——stack和queue的介绍和使用-CSDN博客
一.stack的模拟实现
前面在stake和queue的介绍和使用里,我们介绍了适配器的相关内容,我们在模拟实现stack和queue的时候都只需要调用duquq容器的各个接口来实现我们stack的接口即可。
函数说明 | 接口说明 |
stack() | 构造空的栈 |
empty() | 检测stack是否为空 |
size() | 返回stack中元素的个数 |
top() | 返回栈顶元素的引用 |
push() | 将元素val压入stack中 |
pop() | 将stack中尾部的元素弹出 |
namespace xing
{
template<class T, class Container = std::deque<T>>
class stack
{
public:
//入栈
void push(const T& x)
{
_con.push_back(x);
}
//出栈
void pop()
{
_con.pop_back();
}
//获取栈顶元素
T& top()
{
return _con.back();
}
const T& top()
{
return _con.back();
}
//获取有效元素的个数
size_t size()
{
return _con.size();
}
//判断栈是否为空
bool empty()
{
return _com.empty();
}
//交换数据
void swap(stack<T,Container> & s)
{
_con.swap(s._con);
}
private:
Container _con;
};
}
二.queue的模拟实现
queue也是只需要调定deque容器的各个接口来模拟实现自己的接口即可。
函数声明 | 接口说明 |
queue() | 构造空的队列 |
empty() | 检测队列是否为空,是返回true,否则返回false |
size() | 返回队列中有效元素的个数 |
front() | 返回队头元素的引用 |
back() | 返回队尾元素的引用 |
push() | 在队尾将元素val入队列 |
pop() | 将队头元素出队列 |
namespace fu
{
template<class T, class Container = std::deque<T>>
class queue
{
public:
//入队列
void push(const T& x)
{
_que.push_back();
}
//出队列
void pop()
{
_que.pop_front();
}
//获取队头元素
T& front()
{
return _que.front();
}
const T& front()
{
return _que.front();
}
//获取队尾数据
T& back()
{
return _que.back();
}
const T& back()
{
return _que.back();
}
//返回有效元素的个数
size_t size()
{
return _que.size();
}
//判断队列是否为空
bool empty()
{
return _que.empty();
}
//交换数据
void swap(queue<int,Container>& q)
{
_que.swap(q._que);
}
private:
Container _que;
};
}
总结:
stack和queue的模拟实现是不是很简单呢,只要借助外力就可以了。
感谢各位大佬的观看,创作不易,还请各位大佬支持~