让我们考虑以下课程:
class Big
{
public:
std::vector<int> convertToVector();
private:
std::vector<int> data_;
};
我希望Big::convertToVector()
消除对象,移动数据。
我在考虑:
std::vector<int> Big::convertToVector()
{
return std::move(data_);
}
这是正确的方法吗?
答案 0 :(得分:1)
是的,这是正确的方法。
但是,你必须非常小心,因为你的旧矢量处于未指定的状态;你可能想要清空它以避免意外。
std::vector<int> Big::convertToVector() {
std::vector<int> temp;
std::swap(temp, _data);
return std::move(temp);
}
答案 1 :(得分:-1)
只要我知道,std :: vector有移动构造函数,所以你就这样做(就像我一直对其他容器一样)
std::vector<int> Big::convert_to_vector() { return data_; }