我正在尝试构建一个函数,它将所有元素从一个列表转移到双端队列类中的另一个列表。例如,如果您有列表 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;
}
最佳答案
您可能需要将other
的内容设置为空。您发布的代码只是将 c
设置为 null 但 c
无论如何都是一个即将超出范围的局部变量。您可能需要更改 other._head = 0
。
请注意,您的代码不必要地设置了 a
和 d
。同样,temp
并不是真正需要的:您可以只使用 c
代替。
关于c++ - 在双端队列 C++ 中将所有元素从一个列表传输到另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737930/