c++ - 将对象传递给函数而不将其包装到 std::ref 中,而参数被指定为 const 引用
问题描述
我有以下 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
是常量引用,
而我传递整个向量some_vec
而不是将其包装到 std::ref 中。c++ 是否在此处复制完整对象?
解决方案
std::ref
不是为了那个。它用于将现有引用转换为对象,在不能接受引用的情况下使用,例如在std::vector<>
. 这个想法是引用不能被重新分配或设置为 null,因此 STL 容器中的东西(如移动等)不适用于原始引用。很可能它在内部将包装的引用转换为指针。
在您的示例中,参数自动作为参考传递。
推荐阅读
- python - 尝试使用 selenium 自动注册。遇到问题
- c++ - 找出一个数是否是素数
- postgresql - 我怎样才能在 PostgresQL 中做这样的事情?
- azure - Azure Functions 的 ARM 模板文档
- java - 在类构造函数中将对象保存到数据库中是不好的做法吗?
- python - 如何将一个系列转换为一个 numpy 数组?
- sql - SQL:触发器以防止根据条件将行插入表中
- mongodb - 在这种情况下,如何将 mongoDB 的地理点数据转换为 Elasticsearch 7.x?
- php - Laravel - 使用 make:migration 在数据库中创建的表时会生成空的迁移文件
- sql-server - 使用 BCP 实用程序创建动态文件