c++ - 如何在双向链表上执行深拷贝?

标签 c++ linked-list

我很难绕过指针。我可以想象这里有人可以更直观地概念化复制构造函数。我知道您不能简单地将指针分配给彼此(浅拷贝),但我在实际复制对象时遇到了困难。

这是我的代码示例:

class LList {
    /* stuff */

    private:
        struct node {
            node   *next;
            node   *prev;
            int    *o;
        };

        node   *first; // The pointer to the first node (NULL if none)
        node   *last;  // The pointer to the last node (NULL if none)
}

感谢您的帮助!

最佳答案

当你为包含动态分配的T* p<的对象X编写复制构造函数X(const T& other) (在你的情况下可能是 Node*),你最终可能会写这样一行:

p = new T(*other.p);

这会创建您正在复制的对象所指向的对象的拷贝,从而为您提供该对象的深层拷贝。在您的情况下,这将最终导致列表的递归深度复制。

关于c++ - 如何在双向链表上执行深拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668252/

相关文章:

c++ - 错误c2248命名空间内的 friend 类

c++ - 有助于学习 C++ 的酷 API?

c++ - ActiveMQCPP connection.start() 挂了

c++ - Xcode : Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) 制作邻接表时

c++ - 在windows程序上绘图

C++: bitset 不能正常工作

c - 获取列表中节点的当前值和位置

C++单链表插入排序

java - 从数组设置类属性

java - Java中队列链表中的递归toString