4

そのため、動的スタックを使用し、同じクラスの別のインスタンスからスタックのデータをコピーする必要があるコピー コンストラクターを作成したいと考えています。私は関数を書こうとしていますが、かなり難しいようです。誰か手を貸してくれませんか?

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;
        }
    }

};
4

1 に答える 1

8

STL コンテナー アダプターには、まさにそれを可能にstd::stackする割り当てがあります。operator=

#include <stack>

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

手動で行う必要がある場合は、@ FredOverflow の再帰的なソリューションを使用するか、2 つのループと一時的なスタックを使用して行うことができます。

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);
于 2013-02-06T19:34:34.850 に答える