| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | //  (C) Copyright Jeremy Siek 2004//  Distributed under the Boost Software License, Version 1.0. (See//  accompanying file LICENSE_1_0.txt or copy at//  http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_QUEUE_HPP#define BOOST_QUEUE_HPP#include <deque>#include <algorithm>namespace boost{template < class _Tp, class _Sequence = std::deque< _Tp > > class queue;template < class _Tp, class _Seq >inline bool operator==(const queue< _Tp, _Seq >&, const queue< _Tp, _Seq >&);template < class _Tp, class _Seq >inline bool operator<(const queue< _Tp, _Seq >&, const queue< _Tp, _Seq >&);template < class _Tp, class _Sequence > class queue{#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS    template < class _Tp1, class _Seq1 >    friend bool operator==(        const queue< _Tp1, _Seq1 >&, const queue< _Tp1, _Seq1 >&);    template < class _Tp1, class _Seq1 >    friend bool operator<(        const queue< _Tp1, _Seq1 >&, const queue< _Tp1, _Seq1 >&);#endifpublic:    typedef typename _Sequence::value_type value_type;    typedef typename _Sequence::size_type size_type;    typedef _Sequence container_type;    typedef typename _Sequence::reference reference;    typedef typename _Sequence::const_reference const_reference;#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDSprotected:#endif    _Sequence c;public:    queue() : c() {}    explicit queue(const _Sequence& __c) : c(__c) {}    bool empty() const { return c.empty(); }    size_type size() const { return c.size(); }    reference front() { return c.front(); }    const_reference front() const { return c.front(); }    reference top() { return c.front(); }    const_reference top() const { return c.front(); }    reference back() { return c.back(); }    const_reference back() const { return c.back(); }    void push(const value_type& __x) { c.push_back(__x); }    void pop() { c.pop_front(); }    void swap(queue& other)    {        using std::swap;        swap(c, other.c);    }};template < class _Tp, class _Sequence >bool operator==(    const queue< _Tp, _Sequence >& __x, const queue< _Tp, _Sequence >& __y){    return __x.c == __y.c;}template < class _Tp, class _Sequence >bool operator<(    const queue< _Tp, _Sequence >& __x, const queue< _Tp, _Sequence >& __y){    return __x.c < __y.c;}template < class _Tp, class _Sequence >bool operator!=(    const queue< _Tp, _Sequence >& __x, const queue< _Tp, _Sequence >& __y){    return !(__x == __y);}template < class _Tp, class _Sequence >bool operator>(    const queue< _Tp, _Sequence >& __x, const queue< _Tp, _Sequence >& __y){    return __y < __x;}template < class _Tp, class _Sequence >bool operator<=(    const queue< _Tp, _Sequence >& __x, const queue< _Tp, _Sequence >& __y){    return !(__y < __x);}template < class _Tp, class _Sequence >bool operator>=(    const queue< _Tp, _Sequence >& __x, const queue< _Tp, _Sequence >& __y){    return !(__x < __y);}template < class _Tp, class _Sequence >inline void swap(queue< _Tp, _Sequence >& __x, queue< _Tp, _Sequence >& __y){    __x.swap(__y);}} /* namespace boost */#endif /* BOOST_QUEUE_HPP */
 |