使用push_back时,std :: unique_ptr是否已移入std :: vector?

泡沫

我有一个关于如何将std::unique_ptr插入到的问题std::vector想象一下,我有一个生成对象的函数,如下所示:

std::unique_ptr<CObject> createObjects()
{
    return std::unique_ptr<CObject> (new CObject());
}

现在在我的代码中,我有一个,std::vector<std::unique_ptr<CObjects>> vec并且我插入了像这样的元素:

vec.push_back(createObjects());

现在我的问题是:是unique_ptr将向量移入向量还是将其复制?

juanchopanza

unique_ptr不能拷贝构造或复制分配。在将apush_back转换为向量的情况下,只要它是rvalue,就将其移动为了测试这一点,您可以尝试推送一个左值这将要求unique_ptr可以复制或分配,因此将失败:

std::unique_ptr<CObject> p(new CObject());
std::vector<std::unique_ptr<CObject>> vec;
vec.push_back(p); // error!
vec.push_back(std::unique_ptr<CObject>(new CObject())); // OK
vec.push_back(std::move(p)); // OK

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: vector <std :: unique_ptr <>> :: push_back()的正确语法是什么?

来自分类Dev

在std :: vector push_back()和std :: map运算符中使用&&作为参数[]

来自分类Dev

在使用仅移动类型派生的类中定义析构函数时,使用std :: vector的emplace_back或push_back创建时会产生编译时错误

来自分类Dev

当push_back新元素添加到std :: vector时,C ++参考更改

来自分类Dev

std :: vector的push_back()导致奇怪的编译时错误消息

来自分类Dev

std :: vector :: push_back的成本是成功还是无效?

来自分类Dev

MSVC中std :: vector :: push_back的实现

来自分类Dev

std :: vector函数push_back中的奇怪段错误

来自分类Dev

push_back期间std :: vector分段错误

来自分类Dev

std :: vector中push_back函数的奇怪语法

来自分类Dev

关于`std :: vector :: push_back`的小数的选择

来自分类Dev

线程安全性std :: vector push_back并保留

来自分类Dev

MSVC中std :: vector :: push_back的实现

来自分类Dev

OpenCV点的std :: vector,没有push_back方法

来自分类Dev

std::vector<>::push_back 导致 Arduino 链接错误

来自分类Dev

想要简化我的 std::vector push_back 用法

来自分类Dev

AddressSanitizer将std :: vector <T> :: push_back标识为释放后使用堆错误的原因

来自分类Dev

将指针数组推入std :: vector中,避免使用push_back复制对象

来自分类Dev

为什么使用虚拟析构函数进行std :: vector :: push_back segfaults?

来自分类Dev

如何检查std :: unique_ptr是否为空(如果它位于std :: vector中)?

来自分类Dev

std :: vector <std :: vector <int >> push_back导致堆缓冲区溢出

来自分类Dev

std :: vector <std :: unique_ptr <int>>不编译

来自分类Dev

调用std :: vector :: push_back()会更改vector中的先前元素吗?

来自分类Dev

调用std :: vector :: push_back()会更改vector中的先前元素吗?

来自分类Dev

声明包含std :: unique_ptr的结构的std :: vector类时出错

来自分类Dev

std vector push_back':2个重载没有针对“ this”指针错误的合法转换

来自分类Dev

为什么std :: vector :: push_back需要赋值运算符

来自分类Dev

C ++ std :: vector可以同时处理来自多线程的push_back吗?

来自分类Dev

C ++ std :: vector可以同时处理来自多线程的push_back吗?

Related 相关文章

  1. 1

    std :: vector <std :: unique_ptr <>> :: push_back()的正确语法是什么?

  2. 2

    在std :: vector push_back()和std :: map运算符中使用&&作为参数[]

  3. 3

    在使用仅移动类型派生的类中定义析构函数时,使用std :: vector的emplace_back或push_back创建时会产生编译时错误

  4. 4

    当push_back新元素添加到std :: vector时,C ++参考更改

  5. 5

    std :: vector的push_back()导致奇怪的编译时错误消息

  6. 6

    std :: vector :: push_back的成本是成功还是无效?

  7. 7

    MSVC中std :: vector :: push_back的实现

  8. 8

    std :: vector函数push_back中的奇怪段错误

  9. 9

    push_back期间std :: vector分段错误

  10. 10

    std :: vector中push_back函数的奇怪语法

  11. 11

    关于`std :: vector :: push_back`的小数的选择

  12. 12

    线程安全性std :: vector push_back并保留

  13. 13

    MSVC中std :: vector :: push_back的实现

  14. 14

    OpenCV点的std :: vector,没有push_back方法

  15. 15

    std::vector<>::push_back 导致 Arduino 链接错误

  16. 16

    想要简化我的 std::vector push_back 用法

  17. 17

    AddressSanitizer将std :: vector <T> :: push_back标识为释放后使用堆错误的原因

  18. 18

    将指针数组推入std :: vector中,避免使用push_back复制对象

  19. 19

    为什么使用虚拟析构函数进行std :: vector :: push_back segfaults?

  20. 20

    如何检查std :: unique_ptr是否为空(如果它位于std :: vector中)?

  21. 21

    std :: vector <std :: vector <int >> push_back导致堆缓冲区溢出

  22. 22

    std :: vector <std :: unique_ptr <int>>不编译

  23. 23

    调用std :: vector :: push_back()会更改vector中的先前元素吗?

  24. 24

    调用std :: vector :: push_back()会更改vector中的先前元素吗?

  25. 25

    声明包含std :: unique_ptr的结构的std :: vector类时出错

  26. 26

    std vector push_back':2个重载没有针对“ this”指针错误的合法转换

  27. 27

    为什么std :: vector :: push_back需要赋值运算符

  28. 28

    C ++ std :: vector可以同时处理来自多线程的push_back吗?

  29. 29

    C ++ std :: vector可以同时处理来自多线程的push_back吗?

热门标签

归档