如何制作shared_ptrs向量的副本?

Ufx*_*Ufx 5 c++ inheritance shared-ptr c++11

还有vectorshared_ptr基类。

struct Base
{
    virtual ~Base() = 0 {}
};

struct Derived1 : Base
{
};

struct Derived2 : Base
{
};

std::vector<std::shared_ptr<Base>> v;
v.push_back(std::make_shared<Base>(Derived1()));
v.push_back(std::make_shared<Base>(Derived2()));
Run Code Online (Sandbox Code Playgroud)

如何制作副本vector
副本的指针必须指向新对象。

Jes*_*uhl 0

只需复制它即可。

auto v2 = v;
Run Code Online (Sandbox Code Playgroud)

容器保存共享指针,因此它们在复制后会很好,并且仍然指向相同的对象,同时保持它们的活动状态。这里没有问题。