移动语义

void addData(int vNumData, std::vector<std::vector<int>>& voOutput){
    std::vector<int> T;
    T.reserve(vNumData);
    for(int i = 0; i < vNumData; i++){
        T.push_back(100);
    }
    voOutput.push_back(T);   // 耗时操作
}

int main(){
    std::vector<std::vector<int>> Data;
    for(int i = 0; i < 10000; i++){
        addData(10000, Data);
    }
}
  • voOutput.push_back(T) 耗时操作

解决方案

  • 实现移动构造函数
  • 使用 std::move 传递参数,voOutput.push_back(std::move(T));