stl queue

15 篇文章 0 订阅
容器适配器: 容器适配器本身没有任何代码,而只是提供一个接口.而具体实现则由容器来实现(接口的实现也是直接调用容器对应的函数)。容器适配器也只是将一个容器做为其数据成员。有些特定的容器适配器只支持特定的容器。容器适配器不支持迭代器




1.queue: 这是一个单向队列(FIFO)。也就是说只能从后边插入,从前面删除。STL中的queue默认的是使用deque作为容器。因为queue从定义可以看出是deque的一个特例




//_Ty : 元素类型
//_C: 容器类型
template<class _Ty, class _C = deque<_Ty> >
class queue {
public:
typedef _C::allocator_type allocator_type;
typedef _C::value_type value_type;
typedef _C::size_type size_type;
explicit queue(const allocator_type& _Al = allocator_type())
: c(_Al) {}
allocator_type get_allocator() const
{return (c.get_allocator()); }
bool empty() const
{return (c.empty()); }
size_type size() const
{return (c.size()); }
value_type& front()
{return (c.front()); }
const value_type& front() const
{return (c.front()); }
value_type& back()
{return (c.back()); }
const value_type& back() const
{return (c.back()); }
void push(const value_type& _X)
{c.push_back(_X); }
void pop()
{c.pop_front(); }
bool operator==(const queue<_Ty, _C>& _X) const
{return (c == _X.c); }
bool operator!=(const queue<_Ty, _C>& _X) const
{return (!(*this == _X)); }
bool operator<(const queue<_Ty, _C>& _X) const
{return (c < _X.c); }
bool operator>(const queue<_Ty, _C>& _X) const
{return (_X < *this); }
bool operator<=(const queue<_Ty, _C>& _X) const
{return (!(_X < *this)); }
bool operator>=(const queue<_Ty, _C>& _X) const
{return (!(*this < _X)); }
protected:
_C c;
};






从上面定义可以看出容器必须具有: get_allocator, empty, size, front, back, push_back, pop_front operator== operator < 等成员函数.


因为队列是FIFO.所以不支持下标而只支持push放入队列尾部, pop从队列头部删除等基本的队列操作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值