使用来自 unique_ptr 向量的原始指针作为排序的 ID

Using raw pointers from vector of unique_ptr as an ID for sorting

我想问一下这是否是一个好习惯。让我们假设这种情况:

std::vector<unique_ptr<Model>> data;

使用来自该向量的原始指针(来自向量中每个 unique_ptr 的原始指针)是否安全?我知道向量可能会在超过保留 space 时重新分配数据,但这只会影响 unique_ptr 的地址,而内部原始指针保证保持不变,对吗?

因此,通过使用那些原始指针而不是添加一些 id 成员来识别模型是否安全?

更具体地说,可以将这些原始指针用作映射中的键吗?我需要从向量中对包含模型指针(作为成员)的对象进行排序,并将具有相同模型的对象分组。

我知道我可以使用一些句柄,例如矢量索引或唯一 ID,但这可能是无用的开销。我问的原因是,取决于指针地址对我来说有点不安全:-)

是的!没关系:)

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