【发布时间】:2017-10-19 11:38:42
【问题描述】:
我想问一下这是否是一个好习惯。让我们假设这种情况:
std::vector<unique_ptr<Model>> data;
使用来自该向量的原始指针(来自向量中每个 unique_ptr 的原始指针)是否安全?我知道当超过保留空间时,向量可能会重新分配数据,但这只会影响 unique_ptr 的地址,而内部原始指针保证保持不变?
因此,使用这些原始指针而不是添加一些 id 成员来识别模型是否安全?
更具体地说,可以将这些原始指针用作映射中的键吗?我需要从向量中对包含模型指针(作为成员)的对象进行排序,并使用相同的模型对对象进行分组。
我知道我可以使用一些句柄,例如向量中的索引或唯一 ID,但这可能是无用的开销。我问的原因是,取决于指针地址对我来说感觉有点不安全:-)
【问题讨论】:
-
是的,它是安全的。即使向量重新分配,unique_ptrs 中的底层指针也不会改变。
-
@CoryKramer 谢谢!
标签: c++ oop pointers unique-ptr