习惯性地反转堆栈?

时间:2016-05-05 10:26:36

标签: c++ c++-standard-library

C ++标准库试图为所有容器提供尽可能统一的接口。然而,一只黑羊伸出来:

#include <algorithm>
#include <stack>

int main()
{
    std::stack<int> s;
    std::reverse(std::begin(s), std::end(s));
}

我无法使用这种常用的习惯用法来反转容器,因为堆栈不是容器:它是一个适配器。因此,它没有beginend个函数。

我必须做这样的事情:

std::stack<int> s;
std::stack<int> s2;
while (!s.empty())
{
    s2.push(s.top());
    s.pop();
}
while (!s2.empty())
{
    s2.top(); // do something with it
    s2.pop();
}

这样做的“标准”方法是什么?请不要使用临时黑客或错综复杂的方法。

0 个答案:

没有答案