gpt4 book ai didi

c++ - 使用 std::vector 成员的 std::vector 为类实现 move 语义的正确方法

转载 作者:行者123 更新时间:2023-11-30 01:28:23 28 4
gpt4 key购买 nike

我有一个类,它有一个成员,它是 vector 的 vector 。我想为此类编写一个构造函数,它将对单个 vector 的右值引用作为参数,并将其作为 vector 参数的单个元素 vector move 到成员 vector 中。到目前为止,我有:

class AClass
{
std::vector<std::vector<int>> member;

public:

AClass(std::vector<int> &&vec) : member(1)
{
member[0] = std::vector<int>(std::move(vec));
}
}

这似乎工作正常,但我不确定 vec 周围的 std::move 是否有必要。或者,如果我以不同的方式编写它,std::vector 会为我处理很多事情。

最佳答案

应该写的更短:

member[0] = std::move(vec);

为了调用

vector<T,Allocator>& operator=(vector<T,Allocator>&& x);

据我所知,显式 move 是必要的,因为 vec 不是右值(它是一个命名变量,可以用在 operator= 的左边>).

关于c++ - 使用 std::vector 成员的 std::vector 为类实现 move 语义的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7568263/

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