假设我想将unique_ptr保存到两个数据结构中的同一个对象中,有什么方法可以做到这一点,或者我应该考虑使用不同的方法?
在我的情况下,我有一张支持快速搜索的地图,我也希望保留对密钥的引用。两个其他数据结构中的值..(说清单)
我真的很想听听更有经验的C ++开发人员的建议,或者可能是Unique_ptr的替代方案。
提前致谢
答案 0 :(得分:6)
假设我想将unique_ptr保存到两个数据结构中的同一个对象中,有什么方法可以做到吗
是的,绝对!现在,unique_ptr
传达了唯一所有权语义 - 但没有任何内容表明您也无法从其他地方获取对它的引用。请注意,只有一个对象可以拥有它,其他数据结构必须是必须的。因此,该对象应始终具有比拥有唯一指针的对象更短的生命周期,以避免无效的内存访问。
现在你只让一个对象持有unique_ptr<T>
,并且该对象包含指向第一个对象地址(通过T*
获得)的原始.get()
。
如果在您的情况下无法实现这种情况,那么unique_ptr
不是正确的工具 - 请改用shared_ptr
。