首页 > 解决方案 > 如何将唯一指针从一个向量移动到另一个唯一指针向量?

问题描述

如何在 C++11 中将aunique_ptr从一个向量移动到 s 的另一个向量?unique_ptr第一个向量的唯一指针应该被完全删除并添加到第二个向量。

标签: c++c++11vectorunique-ptr

解决方案


好吧,在这种情况下,您有两个概念上独立的操作:

  1. 将元素插入容器。当您想要消除源(这实际上是必要的,因为它std::unique_ptr是仅移动类型)时,请使用std::move启用移动语义。

    destination.emplace(destination.begin() + m, std::move(source[n])); // or .insert()
    
  2. 从容器中取出掠夺的元素。

    source.erase(source.begin() + n);
    

推荐阅读