我很想问这是否是一种好的做法。让我们假设这样的场景:使用unique_ptr矢量的原始指针作为排序的ID
std::vector<unique_ptr<Model>> data;
它是安全与此向量(原始指针从向量中的每个的unique_ptr)的原始指针工作?我明白,当超过保留空间时,向量可能会重新分配数据,但只会影响unique_ptr的地址,而内部原始指针保证保持不变。
因此,通过使用这些原始指针而不是添加一些id成员来识别模型是否安全?
更具体地说,可以将这些原始指针用作地图中的关键点吗?我需要从vector中对包含模型指针(作为成员)的对象进行排序,并使用相同的模型对对象进行分组。
我知道我可以使用像索引一些句柄到矢量或唯一的ID,但这可能是无用的开销。我问的原因是,根据指针地址感觉某种程度上对我不安全:-)
是的,它是安全的。即使向量重新分配,unique_ptrs中的底层指针也不会改变。 – CoryKramer
@CoryKramer谢谢你! – Hitokage