包含min函数的栈

std::stack<int> m_data;
std::stack<int> m_min;  //辅助栈
template <typename T> void StackWithMin<T>::push(const T& value)
{
	m_data.push(value);
	if (m_min.size() == 0 || value < m_min.top())
		m_min.push(value);
	else
		m_min.push(m_min.top());
}
template <typename T> void StackWithMin<T>::pop()
{
	assert(m_data.size() > 0 && m_min.size() > 0);

	m_data.pop();
	m_min.pop();
}
template <typename T> const T& StackWithMin<T>::min() const
{
	assert(m_data.size() > 0 && m_min.size() > 0);

	return m_min.top();
}

  

posted on 2021-02-18 10:37  Noora&w  阅读(53)  评论(0编辑  收藏  举报