gpt4 book ai didi

c++ - c++中带有智能指针的循环双链表

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:51 25 4
gpt4 key购买 nike

是否可以在C++中使用智能指针创建循环双向链表

struct Node {
int val;
shared_ptr<Node> next;
weak_ptr prev;
};

shared_ptr<Node> head;

但这将有共享指针的循环引用,因此无法正确释放。

最佳答案

使循环链表本身成为一个类(使用构建它所需的任何操作,如追加)。通过设置 tail->next = nullptr 让它的析构函数断开链接。断开哪个链接应该无关紧要,因此如果您不使用头部和尾部,只需将它们中的任何一个设置为 nullptr,就可以了。

在我的测试中,我做了一个循环链表,节点没有析构。然后在最后,我在它退出之前添加了 tail->next = nullptr,并且所有的析构函数都正确地触发了。

关于c++ - c++中带有智能指针的循环双链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com