我试图了解当地情境中的智能指针。我在S / O上看了几个关于std::vector
MyObject
和std::vector
智能指针(shared_ptr
/ unique_ptr
)的问题MyObject
秒。
我找不到的答案是,如果我有一个1000个智能指针向MyObject
s(使用make_shared
/ make_unique
),是对象它们本身存储在内存中的随机位置,智能指针存储在向量中的连续内存块中,还是指针和对象都存储在向量中的连续内存块中?
答案 0 :(得分:0)
至少保证向量中的元素是连续存储的。这符合最近的C ++标准。
智能指针指向的对象存储在其他位置。它取决于你的对象最终会在哪里找到。
如果您有选择,将对象直接存储到向量中可能会更好(也更快)。指针会添加一个额外的间接层,这可能会降低程序的速度。