#define ST_TPL template #define ST stack namespace ft { /************ * copliens : ************/ // constructors ------------------------------ ST_TPL ST:: stack(const container_type& cont) : c(cont) {} /********************** * overload functions : **********************/ // empty ------------------------------------- ST_TPL bool ST:: empty() const { return c.empty(); } // size -------------------------------------- ST_TPL typename ST::size_type ST:: size() const { return c.size(); } // top --------------------------------------- ST_TPL typename ST::value_type& ST:: top() { return c.back(); } ST_TPL const typename ST::value_type& ST:: top() const { return c.back(); } // push -------------------------------------- ST_TPL void ST:: push(const value_type& value) { c.push_back(value); } // pop --------------------------------------- ST_TPL void ST:: pop() { c.pop_back(); } /************************ * non-member functions : ************************/ // operator == ------------------------------- ST_TPL bool operator==(const stack& lhs, const stack& rhs) { return lhs.c == rhs.c; } // operator != ------------------------------- ST_TPL bool operator!=(const stack& lhs, const stack& rhs) { return lhs.c != rhs.c; } // operator < -------------------------------- ST_TPL bool operator<(const stack& lhs, const stack& rhs) { return lhs.c < rhs.c; } // operator > -------------------------------- ST_TPL bool operator>(const stack& lhs, const stack& rhs) { return lhs.c > rhs.c; } // operator <= ------------------------------- ST_TPL bool operator<=(const stack& lhs, const stack& rhs) { return lhs.c <= rhs.c; } // operator >= ------------------------------- ST_TPL bool operator>=(const stack& lhs, const stack& rhs) { return lhs.c >= rhs.c; } } // namespace ft #undef VT #undef VT_TPL