在堆栈<int>上使用std :: max_element

时间:2015-12-26 11:15:34

标签: c++ stl stack

我究竟能获得堆栈的max_element吗? STL堆栈没有任何begin()end()方法,我可以通过以下方式获得最大值:

auto max = max_element(c.begin(), c.end());

1 个答案:

答案 0 :(得分:1)

std::stack具有受限制的接口,这是该抽象的全部要点。如果没有那么你可以使用例如一个std::deque。但是你有很多选择:

  • 您可以弹出所有项目。如果您希望最后的原始堆栈返回,那么您可以将它们推回去。

  • 您可以访问基础容器(不使用派生类)。它是受保护的成员。如果您害怕投射和正式未定义的行为,臭名昭着的C ++类型系统漏洞对于成员指针是有帮助的。

  • 您可以直接使用自定义派生类而不是std::stack

此列表并非详尽无遗,但它们是更自然的选择。

即。其他方法相当不自然&amp;解释