Skip to content

Conversation

@gamdwk
Copy link

@gamdwk gamdwk commented Aug 13, 2024

``���改 main.cpp,改良其中的双链表类 List:

  • 避免函数参数不必要的拷贝 5 分
    修改print函数参数为常量引用。
  • 修复智能指针造成的问题 10 分
    使用shared_ptr会导致循环引用,因此在List释放head以后,Node无法被释放
    修改next和prev为
std::unique_ptr<Node> next;
Node *prev;

减少了shared_ptr的增加的atomic变量。解决了循环引用问题

  • 改用 unique_ptr<Node> 10 分
    改用unique_ptr,把赋值操作改成移动操作。
    push_front的时候要注意不能提前把head move掉,否则会导致后面判断head为空

  • 实现拷贝构造函数为深拷贝 15 分
    遍历列表并复制

  • 说明为什么可以删除拷贝赋值函数 5 分
    拷贝赋值函数可以由拷贝构造+移动赋值函数实现。

  • 改进 Node 的构造函数 5 分
    使用explicit和列表表达式
    并通过 main() 函数中的基本测试。

[ 1 4 9 2 8 5 7 ]
~Node(9)
[ 1 4 2 8 5 7 ]
List 被拷贝!
~Node(8)
[ 1 4 2 5 7 ]
[ 1 4 2 8 5 7 ]
~Node(1)
~Node(4)
~Node(2)
~Node(8)
~Node(5)
~Node(7)
~Node(1)
~Node(4)
~Node(2)
~Node(5)
~Node(7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant