将对象传递给函数而不将其包装到 std::ref,而参数被指定为常量引用
Pass object to a function without wrapping it into std::ref, while argument is specified as a const reference
我有下面的c++代码(只是一道题的简单例子)
#include <iostream>
#include <string>
#include <vector>
double get_first(const std::vector<double>& vec) {
return vec[0];
}
int main()
{
std::vector<double> some_vec = {1, 2};
std::cout << get_first(some_vec);
}
所以这里函数的参数get_first
是const reference,
虽然我传递了整个向量 some_vec
而不是将其包装到 std::ref 中。 c++ 是否在此处复制完整对象?
std::ref
不是为了那个。它用于将现有引用转换为对象,用于无法接受引用的地方,例如 std::vector<>
。这个想法是不能重新分配引用或将其设置为空,因此 STL 容器中的内容(如移动等)不适用于原始引用。很可能它在内部将包装引用转换为指针。
在您的示例中,参数自动作为引用传递。
我有下面的c++代码(只是一道题的简单例子)
#include <iostream>
#include <string>
#include <vector>
double get_first(const std::vector<double>& vec) {
return vec[0];
}
int main()
{
std::vector<double> some_vec = {1, 2};
std::cout << get_first(some_vec);
}
所以这里函数的参数get_first
是const reference,
虽然我传递了整个向量 some_vec
而不是将其包装到 std::ref 中。 c++ 是否在此处复制完整对象?
std::ref
不是为了那个。它用于将现有引用转换为对象,用于无法接受引用的地方,例如 std::vector<>
。这个想法是不能重新分配引用或将其设置为空,因此 STL 容器中的内容(如移动等)不适用于原始引用。很可能它在内部将包装引用转换为指针。
在您的示例中,参数自动作为引用传递。