Avatar ·

什么是 std::move() 以及何时应该使用它?

大家好!我正在学习 C++11,并试图理解移动语义。我读过关于 std::move() 的内容,但还没有完全明白它是什么以及为什么需要它。 例如,我有这样的代码: ```cpp std::vector createBigVector() { std::vector v(1000000, 42); return v; } int main() { std::vector data = createBigVector(); // 拷贝还是移动? } ``` 我知道编译器可以应用返回值优化(RVO/NRVO),但如果我在 return 中显式使用 std::move(),这会有帮助还是反而有害? 另一个例子:我想将一个大型对象传递给函数,但传递后不再需要它。如何正确使用 std::move()? ```cpp void processData(std::vector data) { // ... 对 data 进行大量操作 } int main() { std::vector bigData = {1, 2, 3, ..., 1000000}; processData(bigData); // 拷贝! // bigData 不再需要 } ``` 我听说可以写成 `processData(std::m