文档总目录

本文目录

  • 按值传递和按引用传递
  • Eigen的处理

英文原文(Passing Eigen objects by value to functions)

按值传递和按引用传递

按值传递:传入函数的参数是原始数据类型,被传递的值会被复制给一个局部变量,在函数执行完毕之前,局部变量会被销毁,在函数内对该参数做任何处理都不会影响外部参数。
按引用传递:传入函数的参数是引用数据类型,会把这个值在内存中的地址复制给一个局部变量,因此函数内这个局部变量的变化会反应在函数的外部。

值传递常用于从实参变量中取值(read)。引用传递常用于向实参变量中写值(write)。
使用引用传递时,实际上是向一个函数开放了对实参的写权限。

Eigen的处理

按值传递对象在 C++ 中几乎总是一个非常糟糕的用法,因为这会创建无用的副本,应该通过引用传递它们。

对于 Eigen,这一点更为重要:按值传递固定大小的可向量化 Eigen 对象不仅效率低下,而且可能是非法的或使程序崩溃!

原因是这些 Eigen 对象具有对齐修饰符,在按值传递时会不遵守这些修饰符。

例如,像这样的函数,其中向量 v 按值传递:

void my_function(Eigen::Vector2d v);

需要重写如下,通过 const 引用传递向量 v

void my_function(const Eigen::Vector2d& v);

同样,如果有一个以 Eigen 对象作为成员的类:

struct Foo
{Eigen::Vector2d v;
};
void my_function(Foo v);

这个函数也需要这样改写:

void my_function(const Foo& v);

请注意,按值返回对象的函数不会存在这个问题。

[Eigen中文文档] 按值将Eigen对象传递给函数相关推荐

  1. [Eigen中文文档] 归约、访问者和广播

    专栏总目录 本文目录 归约 范数计算 布尔归约 用户自定义的归约 访问者函数 局部归约 将局部归约与其他操作结合 广播 将广播与其他操作结合 英文原文(Reductions, visitors and ...

  2. [Eigen中文文档] 矩阵与向量运算

    专栏总目录 本文目录 介绍 加法与减法 标量的标量乘法与除法 表达式模板 转置与共轭 (矩阵与矩阵)和(矩阵与向量)的乘积 点积和叉积 基本算术的简化运算 操作的有效性 英文原文(Matrix and ...

  3. [Eigen中文文档] 稀疏矩阵快速参考指南

    文档总目录 本文目录 稀疏矩阵初始化 构造 重置大小/预分配内存空间 赋值 逐元素插入 批量插入 指定位置或随机插入 矩阵属性 算术运算 加减 标量积 稀疏矩阵乘积 转置/伴随 排列 组件级操作 其他 ...

  4. [Eigen中文文档] 切片和索引

    专栏总目录 本文目录 概述 基本的切片 编译时的大小和步长 倒序 索引序列 自定义索引列表 英文原文(Slicing and Indexing) 本文介绍了如何使用操作运算符operator()索引行 ...

  5. eigen之eigen中文文档

    GitHub - growinguptogether/EigenDocInChinese: Eigen3.3.7 Doc中文版

  6. PyTorch官方中文文档:torch.optim 优化器参数

    内容预览: step(closure) 进行单次优化 (参数更新). 参数: closure (callable) –...~ 参数: params (iterable) – 待优化参数的iterab ...

  7. golang中文文档_Golang 标准库 限流器 time/rate 设计与实现

    限流器是后台服务中十分重要的组件,在实际的业务场景中使用居多,其设计在微服务.网关.和一些后台服务中会经常遇到.限流器的作用是用来限制其请求的速率,保护后台响应服务,以免服务过载导致服务不可用现象出现 ...

  8. springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

    源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...

  9. 使用编译器——Solidity中文文档(8)

    写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第八部分<使用编译器>,特发布出来邀请solidity爱好者.开发者做公开 ...

最新文章

  1. python连接oracle
  2. postgreSql 常用操作总结
  3. js中引用类型赋值(拷贝)问题
  4. 博文视点读书节第六日丨产品大咖书单阿里云专家直播预告,更有超值代金券手慢无
  5. win10 电池测试软件,Win10电池检测方法及查看Win10电池检测报告说明
  6. 推挽输出和开漏输出详解
  7. 2017年终总结——恍恍惚惚又一年
  8. 解决pycharm下载第三方库速度慢的问题
  9. 使用jQuery用键盘去控制图片移动
  10. C++ STL求全排列和组合
  11. 协议:GRE;collisions
  12. 获取行政边界经纬度数据
  13. 使用Adobe Illustrate进行科研论文图片排版
  14. 什么是SAP GUI的client
  15. Sqlmap -- POST注入
  16. java个人博客系统代码下载_java个人博客系统代码
  17. Kubernetes----Job控制器
  18. ios5.1.1越狱实践
  19. 大数据Hive(一):​​​​​​​Hive基本概念
  20. 按需视觉识别:愿景和初步方案

热门文章

  1. 网络测试-2G、3G、4G网速参考
  2. CSS3实现文字流光渐变特效
  3. java编译找不到符号_编译java代码时报错找不到符号
  4. Redis:发布订阅机制
  5. 商品销售额持续下滑可视化分析
  6. 简述SOA和微服务的概念以及两者之间的关系和异同
  7. layUI框架表格中图片展示完整实例
  8. 论文阅读 [TPAMI-2022] Multiview Clustering: A Scalable and Parameter-Free Bipartite Graph Fusion Method
  9. Python的元组(tuple)类型
  10. JavaScript:使用键盘/鼠标来移动标签