在deque C ++中将所有元素从一个列表传输到另一个列表

时间:2013-11-02 01:16:38

标签: c++ merge deque

我正在尝试构建一个函数,它将在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;            
}

1 个答案:

答案 0 :(得分:1)

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

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