C++ 如何复制堆栈?

C++ 如何复制堆栈?,c++,C++,因此,我使用一个动态堆栈,我想编写一个复制构造函数,它必须从同一类的另一个实例复制堆栈的数据。我正在尝试编写函数,但似乎很难。谁能帮我一下吗 template<typename T=int> class LStack { public: template<typename U=int> struct elem { U con; elem<U>* link; } private: el

因此,我使用一个动态堆栈,我想编写一个复制构造函数,它必须从同一类的另一个实例复制堆栈的数据。我正在尝试编写函数,但似乎很难。谁能帮我一下吗

template<typename T=int>
class LStack
{
public:

    template<typename U=int>
    struct elem
    {
        U con;
        elem<U>* link;
    }

private:

    elem<T>* el;

    void Copystack(Lstack const& stack)    // HERE
    {
        elem<T>* last = el;
        el->con = stack->con;
        while(stack->link != null)
        {
            var temp = new elem<T>;
            temp->con = stack->con;
            temp->link = stack->link;
            stack = stack->link;
        }
    }

};
模板
类LStack
{
公众:
模板
结构元素
{
乌康;
元素*链接;
}
私人:
elem*el;
void Copystack(Lstack const&stack)//此处
{
elem*last=el;
el->con=堆栈->con;
while(堆栈->链接!=null)
{
var temp=新元件;
温度->控制=堆栈->控制;
临时->链接=堆栈->链接;
堆栈=堆栈->链接;
}
}
};

STL容器适配器
std::stack
有一个赋值
操作符=
,允许您准确地执行该操作

#include <stack>

int main()
{
   std::stack<int> s1;
   std::stack<int> s2;
   s1 = s2;
}

这可能是一个重复的问题:祝你好运!您是在尝试将元素从先进复制到后进,还是从后进复制到先进?其顺序必须相同,与问题无关,但
LStack::elem
也是一个模板,这看起来令人困惑。为什么不干脆
struct elem{T con;elem*link;}?必须迭代堆栈中的元素。您试图朝哪个方向迭代?您是在尝试从first-in迭代到last-in,还是从last-in迭代到first-in?
void copy_reverse(Stack& source, Stack& dest)
{
    while(!source.empty())
        dest.push(Element(source.top()));
        source.pop();
    }
}

Stack src, tmp, dst;
copy_reverse(src, tmp);
copy_reverse(tmp, dst);