gpt4 book ai didi

c++ - 将 std::vector> 分配给另一个 std::vector>

转载 作者:太空狗 更新时间:2023-10-29 23:34:53 29 4
gpt4 key购买 nike

我有一个 std::vector<std::unique_ptr<MyClass>>我将其分配给相同类型的第二个 vector 。

我收到这个编译器错误:

/opt/gcc-8.2.0/include/c++/8.2.0/bits/stl_algobase.h:324:18: error: use of deleted function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = MyClass; _Dp = std::default_delete<MyClass>]'
*__result = *__first;

这是因为为了进行赋值,我需要为 MyClass 定义一个 move 赋值运算符吗? ?该类仅包含几个 unordered_maps、一个集合和几个原语。没有指针成员。

最佳答案

您不能将 std::unique_ptr 元素的 vector 复制分配给另一个,因为您不能复制 std::unique_ptr 本身。这是独一无二的!

在您的 MyClass 上定义的任何操作都不能改变这一事实。

虽然您可以从这样的 vector move - 但这意味着原始 vector 将不再包含那些 std::unique_ptr 元素。

关于c++ - 将 std::vector<std::unique_ptr<T>> 分配给另一个 std::vector<std::unique_ptr<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759623/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com