什么是 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