如何移动对象内部?

时间:2014-11-17 07:49:28

标签: c++11 move move-semantics

让我们考虑以下课程:

class Big
{
public: 
    std::vector<int> convertToVector();
private:
    std::vector<int> data_;
};

我希望Big::convertToVector()消除对象,移动数据。

我在考虑:

std::vector<int> Big::convertToVector()
{
    return std::move(data_);
}

这是正确的方法吗?

2 个答案:

答案 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_; }