Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

using unique_ptr to avoid run-time cost #75

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

delve-wang
Copy link

  • 避免函数参数不必要的拷贝 5 分 。将print函数原先的传List的拷贝改为const List &。
  • 修复智能指针造成的问题 10 分。使用unqie_ptr以及裸指针的组合避免循环引用造成的动态结点的内存无法释放。原始的Node的两个成员均为 shared_ptr,并且List的唯一成员head也为shared_ptr,当head不再指向链表的第一个结点时(即a={}执行时),由于链表的第二个结点仍指向第一个结点,导致第一个结点无法被释放,后续结点同理。而使用unique_ptr则独占结点内存。
  • 改用 unique_ptr 10 分。上面已分析。
  • 实现拷贝构造函数为深拷贝 15 分
  • 说明为什么可以删除拷贝赋值函数 5 分。删除后,a={}仍能通过编译是因为右侧操作符被视作右值,从而调用了移动赋值函数。
  • 改进 Node 的构造函数 5 分。加explicit关键字,以及使用列表初始化成员。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants