2017-10-19 149 views
2

我很想問這是否是一種好的做法。讓我們假設這樣的場景:使用unique_ptr矢量的原始指針作爲排序的ID

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

它是安全與此向量(原始指針從向量中的每個的unique_ptr)的原始指針工作?我明白,當超過保留空間時,向量可能會重新分配數據,但只會影響unique_ptr的地址,而內部原始指針保證保持不變。

因此,通過使用這些原始指針而不是添加一些id成員來識別模型是否安全?

更具體地說,可以將這些原始指針用作地圖中的關鍵點嗎?我需要從vector中對包含模型指針(作爲成員)的對象進行排序,並使用相同的模型對對象進行分組。

我知道我可以使用像索引一些句柄到矢量或唯一的ID,但這可能是無用的開銷。我問的原因是,根據指針地址感覺某種程度上對我不安全:-)

+1

是的,它是安全的。即使向量重新分配,unique_ptrs中的底層指針也不會改變。 – CoryKramer

+0

@CoryKramer謝謝你! – Hitokage

回答

3

是的!這很好:)

只是像往常一樣確保對象超出他們的指針。

+0

謝謝!是的,壽命是確定的。它只是覺得奇怪的使用這樣的指針!^_ ^ – Hitokage