0

deque クラスですべての要素をあるリストから別のリストに転送する関数を構築しようとしています。たとえば、リスト 1 {1,2,3} とリスト 2 {4,5} があるとします。私がやろうとしているのは、リスト 2 内のすべての要素をリスト 1 に転送し、それをリスト 1 {1,2,3,4,5} にすることです (順序付けは必要ありません)。その後、リスト 2 は空になります。しかし、私が得ている結果リストはまったく正しくありません....私のコードに何が問題なのか誰か教えてください。ありがとうございました

void meld(Deque<E>& other)
{

    DNode<E>* a = _head;
    DNode<E>* b = _tail;
    DNode<E>* c = other.get_head();
    DNode<E>* d = other.get_tail();
    DNode<E>* temp = c;
    b->set_next(temp);
    temp->set_prev(b);
    _size += other.size();
    c = nullptr;            
}
4

1 に答える 1

1

おそらく、の内容をother空に設定する必要があります。あなたが投稿したコードは単にcnull に設定されていますがc、とにかくスコープ外に出ようとしているローカル変数です。おそらく変更する必要がありますother._head = 0

コードが不必要に と を設定していることに注意してaくださいd。同様に、実際にtempは必要ありませんc。代わりに使用できます。

于 2013-11-02T01:22:07.297 に答える