我正在构建一个Node类,其中左侧和右侧子节点具有unique_ptr,父节点具有Node *指针。当我删除节点时,我接受节点,我必须检查我正在删除的节点是否是左子节点,然后重置父节点中的unique_ptr。有没有办法获取指针,并询问是否有任何unique_ptr包装,并可能返回它?
有没有办法获取指针,并询问是否有任何unique_ptr包装,并可能返回它?
没有找到unique_ptr
的通用方法,但您可以存储引用。
假设你的树是二进制的,你可以在父母中找到unique_ptr
,如下所示:
(parent->left == this ? parent->left : parent->right).release();
如果树不是二进制,则可以遍历所有子项。
在C ++中,指针是单向的;和unique_ptr
,只是一个指针周围的包装类,并没有改变它。没有办法从它指向的原始指针获取unique_ptr
。
可以为您的特定问题提供一些替代解决方案: