【问题标题】:Using raw pointers from vector of unique_ptr as an ID for sorting使用来自 unique_ptr 向量的原始指针作为排序的 ID
【发布时间】: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


【解决方案1】:

是的!没关系:)

只要确保对象的寿命比它们的指针长,就像往常一样。

【讨论】:

  • 谢谢!是的,寿命还可以。使用这样的指针感觉有点奇怪! ^ _ ^
猜你喜欢
  • 2021-07-15
  • 2012-09-15
  • 2021-03-18
  • 1970-01-01
  • 2015-10-01
  • 2018-08-01
  • 2012-06-26
  • 2017-07-05
  • 2019-11-07
相关资源
最近更新 更多