STL中的Queue容器是基于别的容器封装的,默认实现是基于deque封装实现了,但基于苯人的学习于实现顺序,我们基于List容器封装实现一个Queue容器。
实现如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #pragma once #include "list.hpp"
namespace kiri {
template<typename T> class queue { public: using container_type = kiri::list<T>;
void push(const T& val) { container_.push_back(val); }
void pop() { container_.pop_front(); }
T& front() { return container_.front(); }
const T& front() const { return container_.front(); }
T& back() { return container_.back(); }
const T& back() const { return container_.back(); }
bool empty() const { return container_.empty(); }
std::size_t size() const { return container_.size(); }
private: container_type container_; };
}
|
| 成员函数 |
功能描述 |
void push(const T&) |
向队尾添加一个元素(入队) |
void pop() |
移除队首元素(出队) |
T& front() |
返回队首元素的引用,队列为空时行为未定义 |
const T& front() const |
返回队首元素的常量引用 |
T& back() |
返回队尾元素的引用,队列为空时行为未定义 |
const T& back() const |
返回队尾元素的常量引用 |
bool empty() const |
判断队列是否为空 |
std::size_t size() const |
返回队列中的元素数量 |