dede网站404怎么做,网络代写,创建门户网站的方案,网站建设与管理学习收获前言
对于这两个容器适配器的模拟实现非常简单#xff0c;因为stack和queue只是对其他容器的接口进行了包装#xff0c;在STL中#xff0c;若我们不指明用哪种容器作为底层实现#xff0c;栈和队列都默认是又deque作为底层实现的。 也就是说#xff0c;stack和queue不管是…前言
对于这两个容器适配器的模拟实现非常简单因为stack和queue只是对其他容器的接口进行了包装在STL中若我们不指明用哪种容器作为底层实现栈和队列都默认是又deque作为底层实现的。 也就是说stack和queue不管是用哪种容器实现出来的实际上定义出来的都是对容器进行了封装。
stack的模拟实现
所以我们知道了容器适配器实际上是对其他容器的封装之后我们实现的时候就只需要调用底层容器的各个成员函数实现stack的接口就行
成员函数及作用模拟实现方法push元素入栈调用指定容器的push_backpop元素出栈 调用指定容器的pop_back top获取栈顶元素调用指定容器的backsize获取栈中有效元素个数调用指定容器的sizeempty判断栈是否为空调用指定容器的emptyswap交换两个栈中的数据调用指定容器的swap
模拟实现的代码如下
#pragma once
#includequeue
#includeiostream
using namespace std;
namespace CYF
{templateclass T,class Containerstd::dequeTclass stack{public:void push(const T val){_con.push_back(val);}void pop(){_con.pop_back();}T top(){return _con.back();}size_t size(){return _con.size();}bool empty(){return _con.empty();}void swap(stackT,Container st){_con.swap(st._con);}private:Container _con;};
}
queue模拟实现
同样的我们也通过调用指定容器的成员函数来模拟实现queue。
成员函数及作用模拟实现方法push元素队尾入队调用指定容器的push_backpop元素队头出队调用指定容器的pop_frontfront获取队头元素调用指定容器的frontback获取队尾元素调用指定容器的backsize获取队列中有效数据个数调用指定容器的sizeempty判断队列是否为空调用指定容器的emptyswap交换两个队列中的数据调用指定容器的swap
模拟实现的代码如下
#pragma once
#includeiostream
#includelist
#includequeue
using namespace std;namespace CYF
{templateclass T,class ContainerdequeTclass queue {public:void push(const T val){_con.push_back(val);}void pop(){_con.pop_front();}T front(){return _con.front();}T back(){return _con.back();}size_t size(){return _con.size();}bool empty(){return _con.empty();}void swap(queueT,Container q){_con.swap(q._con);}private:Container _con;};
}
下面这是test.cpp中的测试代码
#includemyStack.h
#includemyQueue.h
void test1()
{CYF::stackint, vectorint st;st.push(1);st.push(2);st.push(3);st.push(4);while (!st.empty()){cout st.top() ;st.pop();}cout endl;
}void test2()
{CYF::queueint, listint q;q.push(1);q.push(2);q.push(3);q.push(4);while (!q.empty()){cout q.front() ;q.pop();}cout endl;
}int main()
{//test1();test2();return 0;
}
以上就是本篇的全部内容谢谢大家