【发布时间】:2015-12-26 11:15:33
【问题描述】:
我如何才能获得堆栈的 max_element ? STL 堆栈没有任何 begin() 或 end() 方法,我可以通过以下方式获得最大值:
auto max = max_element(c.begin(), c.end());
【问题讨论】:
-
std::stack的重点是它是一个堆栈。选择不同的适配器或无适配器。也许std::priority_queue是你想要的。 -
不,priority_queue 对我不起作用,因为我需要按原样安排。 :)
-
但是还需要遍历容器,所以不能有适配器。然后使用
std::vector。你仍然可以push_back、pop_back和back。std::stack只是隐藏了其他所有内容。 -
见stackoverflow.com/questions/13428618/…。您需要对堆栈进行子类化。最好使用私有继承。
-
@LogicStuff,完全正确!谢谢,你可以回答它:)