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

时间:2013-07-29 18:03:43

标签: c++ pointers

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

在我的情况下,我有一张支持快速搜索的地图,我也希望保留对密钥的引用。两个其他数据结构中的值..(说清单)

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

提前致谢

1 个答案:

答案 0 :(得分:6)

  

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

是的,绝对!现在,unique_ptr传达了唯一所有权语义 - 但没有任何内容表明您也无法从其他地方获取对它的引用。请注意,只有一个对象可以拥有它,其他数据结构必须是必须的。因此,该对象应始终具有比拥有唯一指针的对象更短的生命周期,以避免无效的内存访问。

现在你只让一个对象持有unique_ptr<T>,并且该对象包含指向第一个对象地址(通过T*获得)的原始.get()

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