由于性能原因,我想在代码的这一部分中使用移动语义:
resultVector.push_back(GetEntry<T>(m, columnIndex, &readData));
delete[] readData.data;
它看起来像这样:
resultVector.push_back(std::move(GetEntry<T>(m, columnIndex, &readData)));
delete[] readData.data;
但是我不确定是否会由于
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];
}
最佳答案
在这种情况下,无需使用std::move
。 GetEntry
按值返回,这意味着您对push_back
的调用将调用右值引用重载并自动移动对象。
唯一需要使用move
的时间是在您明确希望移动左值(命名对象)时。
关于c++ - 正确使用移动语义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55909377/