c++ - 使用来自 unique_ptr vector 的原始指针作为排序的 ID

标签 c++ oop pointers unique-ptr

我很想问这是否是一个好的做法。让我们假设这种情况:

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

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

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

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

我知道我可以使用一些句柄,例如 vector 索引或唯一 ID,但这可能是无用的开销。我问的原因是依赖指针地址对我来说感觉不安全:-)

最佳答案

是的!没关系:)

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

关于c++ - 使用来自 unique_ptr vector 的原始指针作为排序的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46829019/

相关文章:

c - 指向无效位置的指针

c++ - 为什么取消 istream/ostream 的 IO 函数中的 pthread 会设置 badbit?

c++ - std::move 是否应该用于 return-statements 以提高效率?

java - minStack 子类使用一个对象作为最小堆栈和常规堆栈

c++具有 vector 的不同对象都包含相同的内容

c++ - 空指针强制转换 C++ 和 GTK

c++ - 在链接列表中排序名称

c++ - ThreadSafeModule 构造函数奇怪

c# - 处理方法内部过滤与外部过滤

php - 为什么我可以在不声明类对象的情况下调用非静态函数?