假设我想在两个数据结构中为同一个对象保留一个 unique_ptr,有什么办法可以做到这一点,或者我应该考虑使用不同的方法吗?
就我而言,我有一个支持快速搜索的地图,我还想保留对其他两个数据结构中键和值的引用..(说列表)
我真的很想听听更有经验的 C++ 开发人员的一些建议,或者是 Unique_ptr 的替代方案。
提前致谢
假设我想在两个数据结构中为同一个对象保存一个 unique_ptr,有什么办法可以做到这一点
是的,一点没错!现在,unique_ptr
传达了独特的所有权语义——但没有什么说你不能从其他地方持有对它的引用。请注意,只有一个对象可以拥有它,另一个数据结构必须被征服。因此,该对象应始终具有比拥有唯一指针的对象更短的生命周期,以避免无效的内存访问。
现在您只需让一个对象持有并且该对象持有指向第一个对象地址unique_ptr<T>
的原始数据(通过 获得)。T*
.get()
如果在您的情况下无法实现这种情况,那么unique_ptr
就不是正确的工具——请shared_ptr
改用。