如何在不复制的情况下插入DIY链表实现中?

时间:2020-07-20 10:58:26

标签: c++ pointers

(请不要让我只使用STL;我知道我可以,但是我正试图写一个自己来学习C ++)。

到目前为止,在我所看到的链表的每种实现中,我们都有类似以下内容:

template <typename T>
void List<T>::insertAtFront(const T & data) {
    // Create a new ListNode on the heap:
    ListNode *node = new ListNode(data); // <----- LINE [*]

    // Re-point head, next, etc.
    // ...
}

我的问题是关于第[*]行。这里存在一个潜在的昂贵拷贝分配(取决于T的复杂程度),因为首先我们从ListNode构造新的data,然后将其分配给*node 。我已经通过编写自己的赋值运算符并逐步执行代码进行了检查。

难道没有办法让node指向新建的ListNode吗?

0 个答案:

没有答案