赞
踩
我们通过查库可知 stack
与 queue
的模板参数。
其中模板参数 Container 我们在上一篇文章已经介绍,具体可见:STL详解 —— stack和queue的介绍及使用
我们利用容器适配器来模拟实现 stack
,我们可以使用一个已有的容器作为底层存储结构,并在其基础上封装一个类,实现栈的操作。这样就可以通过复用底层容器的成员函数来实现栈的功能。
具体要实现的成员函数包括:
成员函数 | 函数作用 |
---|---|
push | 压栈 |
pop | 出栈 |
top | 取栈顶元素 |
size | 获取栈里面的元素个数 |
empty | 判空 |
这里以vector为例来演示:
namespace qq { 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(); } size_t size() { return _con.size(); } bool empty() { return _con.empty(); } const T& top() { return _con.back(); } private: Container _con; }; }
同理,我们再进行 queue
的模拟
以 deque
来模拟。
成员函数 | 函数作用 |
---|---|
push | 入队列 |
pop | 出队列 |
front | 获取对头元素 |
back | 获取队尾元素 |
size | 获取队列元素个数 |
empty | 判空 |
namespace qq { template<class T, class Container = std::deque<T>> class queue { public: void push(const T& x) { _con.push_back(x); } void pop() { _con.pop_front(); } size_t size() { return _con.size(); } bool empty() { return _con.empty(); } const T& front() { return _con.front(); } const T& back() { return _con.back(); } private: Container _con; }; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。