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

Using std::max_element on a stack<int>

本文关键字:std max element lt 堆栈 int gt      更新时间:2023-10-16

如何准确地获得堆栈的max_element?STL堆栈没有任何begin()end()方法,我可以通过以下方式获得最大值:

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

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

  • 您可以弹出所有项目。如果你想在最后把原来的叠放回去,那么你可以把它们推回去。

  • 您可以访问基础容器(不使用派生类)。它是受保护的成员。如果您害怕强制转换和形式上未定义的行为,那么针对成员指针的臭名昭著的C++类型系统漏洞是有用的。

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

这份清单并不详尽,但它们是更自然的选择。

也就是说,其他方法是相当不自然的&解释。