有关deque:
back() 返回最后一个元素
front() 返回第一个元素的引用
pop_back() 删除尾部的元素
pop_front() 删除头部的元素
push_back() 在尾部加入一个元素
push_front() 在头部加入一个元素
有关queue:
push() 入队
pop() 出队
front() 访问队首元素
back() 访问队尾元素
template<class T>
class StackMin
{
deque<T> m_data;
deque<T> m_min;
public:
StackMin(){}
virtual ~StackMin(){}
void push(const T& value)
{
m_data.push_back(value);
if (m_min.size() == 0 || value < m_min.back())
m_min.push_back(value);
else
m_min.push_back(m_min.back());
}
void pop()
{
m_data.pop_back();
m_min.pop_back();
}
const T& min() const
{
return m_min.back();
}
};
void main()
{
StackMin<int> s;
s.push(4);
s.push(2);
s.push(3);
cout << s.min() << endl;
s.pop();
cout << s.min() << endl;
s.push(1);
cout << s.min() << endl;
}