面试题答案
一键面试#include <iostream>
#include <vector>
void func(std::vector<int>&& vec) {
// 这里可以对vec进行操作,vec是右值引用
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
}
int main() {
std::vector<int> v{1, 2, 3};
func(std::move(v));
// 原理:std::move本质上是将左值转换为右值引用。
// v本身是左值,通过std::move(v)将其转换为右值引用,
// 这样就能正确匹配func函数的参数std::vector<int>&&,
// 从而实现资源的移动语义,避免不必要的拷贝。
return 0;
}