【发布时间】:2017-07-26 04:23:01
【问题描述】:
This question 很好地解决了指针的深层副本(在本例中为智能指针类型),this question 使用 for 循环解决了容器的深层副本。
有没有一种方法可以在不显式迭代每个元素的情况下执行容器的深层复制?
例如,如果您有一个std::vector<std::shared_ptr<MyObj>> original,并且您想要复制整个容器,请复制每个指针,以便新的std::vector<std::shared_ptr<MyObj>> copied 包含指向来自original 的每个MyObj 元素副本的指针。
【问题讨论】:
-
你需要在堆上分配
N新对象。某处将不得不调用newN次 - 没有办法解决这个问题。 -
@IgorTandetnik:这是有道理的。我没有这样想。
-
当
shared_ptr指向多态类型时,无法自动创建深层副本。
标签: c++ pointers copy deep-copy