58 #define _STL_STACK_H 1
63 _GLIBCXX_BEGIN_NAMESPACE(std)
91 template<typename _Tp, typename _Sequence = deque<_Tp> >
95 typedef typename _Sequence::value_type _Sequence_value_type;
96 __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
97 __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
98 __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
100 template<
typename _Tp1,
typename _Seq1>
104 template<
typename _Tp1,
typename _Seq1>
109 typedef typename _Sequence::value_type value_type;
110 typedef typename _Sequence::reference reference;
111 typedef typename _Sequence::const_reference const_reference;
112 typedef typename _Sequence::size_type size_type;
113 typedef _Sequence container_type;
124 #ifndef __GXX_EXPERIMENTAL_CXX0X__
126 stack(
const _Sequence& __c = _Sequence())
134 stack(_Sequence&& __c = _Sequence())
135 : c(std::move(__c)) { }
143 {
return c.empty(); }
157 __glibcxx_requires_nonempty();
168 __glibcxx_requires_nonempty();
183 { c.push_back(__x); }
185 #ifdef __GXX_EXPERIMENTAL_CXX0X__
187 push(value_type&& __x)
188 { c.push_back(std::move(__x)); }
190 template<
typename... _Args>
192 emplace(_Args&&... __args)
193 { c.emplace_back(std::forward<_Args>(__args)...); }
210 __glibcxx_requires_nonempty();
214 #ifdef __GXX_EXPERIMENTAL_CXX0X__
233 template<
typename _Tp,
typename _Seq>
236 {
return __x.c == __y.c; }
251 template<
typename _Tp,
typename _Seq>
254 {
return __x.c < __y.c; }
257 template<
typename _Tp,
typename _Seq>
260 {
return !(__x == __y); }
263 template<
typename _Tp,
typename _Seq>
266 {
return __y < __x; }
269 template<
typename _Tp,
typename _Seq>
272 {
return !(__y < __x); }
275 template<
typename _Tp,
typename _Seq>
278 {
return !(__x < __y); }
280 #ifdef __GXX_EXPERIMENTAL_CXX0X__
281 template<
typename _Tp,
typename _Seq>
283 swap(stack<_Tp, _Seq>& __x, stack<_Tp, _Seq>& __y)
286 template<
typename _Tp,
typename _Seq>
288 swap(stack<_Tp, _Seq>&& __x, stack<_Tp, _Seq>& __y)
291 template<
typename _Tp,
typename _Seq>
293 swap(stack<_Tp, _Seq>& __x, stack<_Tp, _Seq>&& __y)
297 _GLIBCXX_END_NAMESPACE
const_reference top() const
A standard container giving FILO behavior.
bool operator>(const stack< _Tp, _Seq > &__x, const stack< _Tp, _Seq > &__y)
Based on operator<.
void pop()
Removes first element.
void push(const value_type &__x)
Add data to the top of the stack.
stack(const _Sequence &__c)
Default constructor creates no elements.
bool operator==(const stack< _Tp, _Seq > &__x, const stack< _Tp, _Seq > &__y)
Stack equality comparison.
bool operator!=(const stack< _Tp, _Seq > &__x, const stack< _Tp, _Seq > &__y)
Based on operator==.
bool operator>=(const stack< _Tp, _Seq > &__x, const stack< _Tp, _Seq > &__y)
Based on operator<.