1

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

就我而言,我有一个支持快速搜索的地图,我还想保留对其他两个数据结构中键和值的引用..(说列表)

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

提前致谢

4

1 回答 1

6

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

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

现在您只需让一个对象持有并且该对象持有指向第一个对象地址unique_ptr<T>的原始数据(通过 获得)。T*.get()

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

于 2013-07-29T18:11:36.513 回答