我正在尝试构建一个函数,它将在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;
}
答案 0 :(得分:1)
您可能需要将other
的内容设置为空。您发布的代码仅将c
设置为null,但c
是一个即将超出范围的局部变量。您可能需要更改other._head = 0
。
请注意,您的代码会不必要地设置a
和d
。同样,并非真正需要temp
:您可以改为使用c
。