支持O(1)时间push pop min方法的栈

算法课的习题
题目很简单,但是代码很漂亮

[zz]

template  < typename T >
class  min_stack  {
public:
  
void push(const T& v) {
    s.push(make_pair(v, empty()
||v<s.top().second ? v : s.top().second));
  }


  
void pop() { s.pop(); }

  
const T& top() return s.top().first; }

  
const T& min() return s.top().second; }

  
bool empty() return s.empty(); }

private:
  std::stack
<std::pair<T, T> > s;
}
;

你可能感兴趣的:(支持O(1)时间push pop min方法的栈)