// stack standard header #ifndef _STACK_ #define _STACK_ #include #include #ifdef _MSC_VER /* * Currently, all MS C compilers for Win32 platforms default to 8 byte * alignment. */ #pragma pack(push,8) #endif /* _MSC_VER */ // TEMPLATE CLASS stack template class stack { public: typedef _A allocator_type; typedef _C::value_type value_type; typedef _C::size_type size_type; explicit stack(const _A& _Al = _A()) : c(_Al) {} _A get_allocator() const {return (c.get_allocator()); } bool empty() const {return (c.empty()); } size_type size() const {return (c.size()); } value_type& top() {return (c.back()); } const value_type& top() const {return (c.back()); } void push(const value_type& _X) {c.push_back(_X); } void pop() {c.pop_back(); } bool operator==(const stack<_TYPE, _C, _A>& _X) const {return (c == _X.c); } bool operator<(const stack<_TYPE, _C, _A>& _X) const {return (c < _X.c); } protected: _C c; }; #ifdef _MSC_VER #pragma pack(pop) #endif /* _MSC_VER */ #endif /* _STACK_ */ /* * Copyright (c) 1995 by P.J. Plauger. ALL RIGHTS RESERVED. * Consult your license regarding permissions and restrictions. */ /* * This file is derived from software bearing the following * restrictions: * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this * software and its documentation for any purpose is hereby * granted without fee, provided that the above copyright notice * appear in all copies and that both that copyright notice and * this permission notice appear in supporting documentation. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. */