vector<Class> 或 vector<unique_ptr<Class>> 在这种情况下?

vector<Class> or vector<unique_ptr<Class>> in this case?

假设我有一个 class 看起来像:

class Foo
{
    int sam;
    float fisher;
    double irvin;

    vector<Bar> lambert;
};

我想将 Foo 的实例存储到向量中

vector<Foo> foos;

因为 lambert 可以容纳未定义数量的 Bar,对象切片是否会发生或者 c++ 的向量在这方面非常聪明?

使用 unique_ptr 的向量会更好还是我太担心了?

class Foo
{
    ...
    vector<unique_ptr<Bar>> lambert;
};

谢谢 :) !

当您将派生值存储为其基础时,就会发生对象切片。它只发生在价值观上。假设您总是存储 Bars,而不是它的某些衍生物,则不会发生切片。 vector 将其值存储在别处——这不像保持静态大小的数组。