34 template <
class T,
class _C>
37 template <
class T,
class _C >
40 template <
class T,
class _C >
43 template <
class T,
class _C >
44 bool16 operator< (const stack<T, _C>& lhs,
const stack<T, _C>& rhs);
46 template <
class T,
class _C >
47 bool16 operator<= (const stack<T, _C>& lhs,
const stack<T, _C>& rhs);
49 template <
class T,
class _C >
52 template <
class T,
class _C >
58 template <
class T,
class _C = K2Vector<T> >
62 typedef typename _C::value_type value_type;
63 typedef typename _C::size_type size_type;
64 typedef _C container_type;
66 explicit stack(
const _C& x = _C()) : c(x) {}
72 bool16
empty()
const {
return c.empty(); }
78 size_type
size()
const {
return c.size(); }
84 value_type&
top() {
return c.back(); }
90 const value_type&
top()
const {
return c.back(); }
95 void push(
const value_type& x) { c.push_back(x); }
100 void pop() { c.pop_back(); }
113 template <
class T,
class _C>
114 bool16 operator==(
const stack<T, _C>& lhs,
const stack<T, _C>& rhs)
116 return lhs.c == rhs.c;
119 template <
class T,
class _C>
120 bool16 operator< (const stack<T, _C>& lhs,
const stack<T, _C>& rhs)
122 return lhs.c < rhs.c;
125 template <
class T,
class _C>
126 bool16 operator!=(
const stack<T, _C>& lhs,
const stack<T, _C>& rhs)
128 return lhs.c != rhs.c;
131 template <
class T,
class _C>
132 bool16 operator> (
const stack<T, _C>& lhs,
const stack<T, _C>& rhs)
134 return lhs.c > rhs.c;
137 template <
class T,
class _C>
138 bool16 operator>=(
const stack<T, _C>& lhs,
const stack<T, _C>& rhs)
140 return lhs.c >= rhs.c;
143 template <
class T,
class _C>
144 bool16 operator<=(const stack<T, _C>& lhs,
const stack<T, _C>& rhs)
146 return lhs.c <= rhs.c;