Blame view

3rdparty/boost_1_81_0/boost/pending/queue.hpp 3.08 KB
dbf9e800   Hu Chunming   提交_GLIBCXX_USE_CX...
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  //  (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 >&);
  #endif
  public:
      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_FRIENDS
  protected:
  #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 */