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

时间:2017-10-19 11:38:42

标签: c++ oop pointers unique-ptr

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

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

使用此向量中的原始指针(向量中每个unique_ptr的原始指针)是否安全?我理解,当超过保留空间时,向量可能会重新分配数据,但这只会影响unique_ptr的地址,同时保证内部原始指针保持不变?

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

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

我知道我可以使用像索引这样的句柄到向量或唯一ID,但这可能是一个无用的开销。我问的原因是,取决于指针地址对我来说感觉不安全: - )

1 个答案:

答案 0 :(得分:3)

是的!那没关系:)

请像往常一样确保对象比指针更长。