gpt4 book ai didi

c++ - 使用 std::unique_ptr 的双向链表

转载 作者:太空狗 更新时间:2023-10-29 20:43:25 26 4
gpt4 key购买 nike

有人建议实现吗?前几天我在家里试过这个,发现移动语义太难建立先前的链接或简单的链表。如果使用 std::unique_ptr 制作树很容易。当然,由于复制/分配,std::shared_ptr 可以轻松实现这个问题。那怎么样呢?

最佳答案

由于问题已重新打开,我将发表我认为是答案的评论:

如果你的意思是 unique_ptr ,那是不可能的,因为在双向链表中你有两个指针指向每个元素,因此它们不能都是 unique_ptr。 (这会以某种方式与 unique 部分相矛盾...)

为了清楚起见,让我们考虑一个包含三个元素的列表:A <-> B <-> C这里A将包含 unique_ptr next , 指向 B因此拥有 B . C会有一个 unique_ptr prev , 指向 B以及 - 也拥有它。两个 unique_ptr拥有相同的对象是违反 unique_land 法则的,由于 unique_ptr,您必须付出邪恶的努力才能实现它。的移动属性。

替代方案是一个列表,其中 next指针是 unique_ptrs , 而 last指针是普通的旧 C 指针——我在那里没有看到太多问题,所以我认为这不是你想要的。

但是如果您有类似“半唯一列表”的想法,请提供一些代码并告诉我们您遇到的问题 - 我们很乐意提供帮助:)

关于c++ - 使用 std::unique_ptr 的双向链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384443/

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