【问题标题】:Can a container of pointers be deep copied without explicity iterating over every element?可以在不显式迭代每个元素的情况下深度复制指针容器吗?
【发布时间】: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


【解决方案1】:

当然,有一个 foreach、一个仿函数和一个虚拟克隆方法。 但在我深入研究之前,我发现有人已经以更现代的方式回答了这个问题(假设你可以使用 lambdas): vector deep copy using a functor or lambda

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 2018-01-26
    • 2022-11-10
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2018-03-30
    相关资源
    最近更新 更多