C++初阶:STL详解(九)——stacke和queue的模拟实现
✨✨小新课堂开课了,欢迎欢迎~✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏: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的模拟实现是不是很简单呢,只要借助外力就可以了。
感谢各位大佬的观看,创作不易,还请各位大佬支持~