我究竟能获得堆栈的max_element吗? STL堆栈没有任何begin()
或end()
方法,我可以通过以下方式获得最大值:
auto max = max_element(c.begin(), c.end());
答案 0 :(得分:1)
std::stack
具有受限制的接口,这是该抽象的全部要点。如果没有那么你可以使用例如一个std::deque
。但是你有很多选择:
您可以弹出所有项目。如果您希望最后的原始堆栈返回,那么您可以将它们推回去。
您可以访问基础容器(不使用派生类)。它是受保护的成员。如果您害怕投射和正式未定义的行为,臭名昭着的C ++类型系统漏洞对于成员指针是有帮助的。
您可以直接使用自定义派生类而不是std::stack
。
此列表并非详尽无遗,但它们是更自然的选择。
即。其他方法相当不自然&解释