我想交换 std::stack<double>
顶部的两个值.有没有比以下方法更好的方法?
void swap_top(std::stack<double>& stack)
{
double a = stack.top();
stack.pop();
double b = stack.top();
stack.pop();
stack.push(a);
stack.push(b);
}
最佳答案
对于普通堆栈,没有更好的方法。
有趣的是,stack
适配器实际上将底层容器公开为 protected 成员。这意味着您可以这样做:
template <typename T, typename Container = std::deque<T>>
class stack_ex : public std::stack<T, Container> {
public:
using stack_ex::stack::stack;
void swap_top() {
auto last = c.rbegin();
auto before_last = std::prev(last);
std::iter_swap(last, before_last);
}
};
关于c++ - 交换堆栈上的两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29694139/