MinInStack

来源:互联网 发布:adobe软件破解补丁 编辑:程序博客网 时间:2024/06/08 13:03
#include<stack>#include<assert.h>template <typename T> class MinInStack{public:MinInStack(){};virtual ~MinInStack(void){};T& top();const T& top() const;void push(const T& e);void pop();const T& min() const;private:std::stack<T> m_data;std::stack<T> min_data;};template <typename T> void MinInStack<T>::push(const T& value){m_data.push(value);if(min_data.size()==0 || value<min_data.top())min_data.push(value);else min_data.push(min_data.top());}template <typename T> void MinInStack<T>::pop(){assert(m_data.size()>0 && min_data.size()>0);m_data.pop();min_data.pop();}template <typename T> const T& MinInStack<T>::min() const{assert(m_data.size()>0 && min_data.size()>0);return min_data.top();}

0 0