2013-11-02 48 views
0

我试图构建一个函数,它将所有元素从一个列表中传递到另一个deque类中。例如,如果您有列表1 {1,2,3}和列表2 {4,5}。我要做的是将列表2中的所有元素转移到列表1中,使列表1 {1,2,3,4,5}(不需要排序),列表2在此之后将为空。然而,我得到的结果列表并不正确....任何人都可能有什么问题吗?谢谢将所有元素从一个列表转移到另一个deque C++

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

回答

1

您可能需要将other的内容设置为空。您发布的代码仅将c设置为空,但c是即将超出范围的局部变量。您可能需要更改other._head = 0

请注意,您的代码不必要地设置了ad。同样,temp并不是真的需要:您可以改用c

+0

非常感谢您的帮助 –

相关问题