正确使用移动语义

Blo*_*nat 2 c++

由于性能原因,我想在代码的这一部分中使用移动语义:

resultVector.push_back(GetEntry<T>(m, columnIndex, &readData));
delete[] readData.data;
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

resultVector.push_back(std::move(GetEntry<T>(m, columnIndex, &readData)));
delete[] readData.data;
Run Code Online (Sandbox Code Playgroud)

但是我不确定是否会导致delete[] readData.data;事后的不确定行为。

这是GetEntry函数:

template<typename T>
T GetEntry(int line, int col, hdfData<T> *hdfData) {
    int n_max = hdfData->dims[1];
    return hdfData->data[n_max * line + col];
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ica 7

std::move在这种情况下,无需使用。 GetEntry按值返回,这意味着您的调用push_back将调用右值引用重载并自动移动对象。

唯一需要使用的时间move是您明确想要移动左值(命名对象)时。