在两个数据结构中保持相同的唯一指针

Rou*_*uki 1 c++ pointers

假设我想将unique_ptr保存到两个数据结构内的同一个对象中,有什么方法可以做到这一点,或者我应该考虑使用不同的方法?

在我的情况下,我有一个支持快速搜索的地图,我还想在两个其他数据结构中保持对键和值的引用..(说清单)

我真的很想听听更有经验的C++开发人员的建议,或者可能是Unique_ptr的替代方案.

提前致谢

Kon*_*lph 6

假设我想将unique_ptr保存到两个数据结构内的同一个对象中,有什么方法可以做到这一点

是的,一点没错!现在,unique_ptr传达了独特的所有权语义 - 但没有任何东西说你也不能从其他地方获得它的引用.请注意,只有一个对象可以拥有它,其他数据结构必须是必须的.因此,该对象应始终具有比拥有唯一指针的对象更短的生命周期,以避免无效的内存访问.

现在你只让一个对象持有unique_ptr<T>,对象持有一个raw T*指向第一个对象的地址(通过获得.get()).

如果在您的情况下无法实现这种情况,那么unique_ptr就不是正确的工具 - shared_ptr而是使用.