由于性能原因,我想在这部分代码中使用移动语义:
resultVector.push_back(GetEntry<T>(m, columnIndex, &readData));
delete[] readData.data;
它看起来像这样:
resultVector.push_back(std::move(GetEntry<T>(m, columnIndex, &readData)));
delete[] readData.data;
但我不确定它是否会导致未定义的行为,因为之后的qazxsw poi。
这是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
的调用将调用rvalue引用重载并自动移动对象。
您需要使用push_back
的唯一时间是您明确要移动左值(命名对象)。