[Eigen中文文档] 按值将Eigen对象传递给函数
文档总目录
本文目录
- 按值传递和按引用传递
- 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对象传递给函数相关推荐
- [Eigen中文文档] 归约、访问者和广播
专栏总目录 本文目录 归约 范数计算 布尔归约 用户自定义的归约 访问者函数 局部归约 将局部归约与其他操作结合 广播 将广播与其他操作结合 英文原文(Reductions, visitors and ...
- [Eigen中文文档] 矩阵与向量运算
专栏总目录 本文目录 介绍 加法与减法 标量的标量乘法与除法 表达式模板 转置与共轭 (矩阵与矩阵)和(矩阵与向量)的乘积 点积和叉积 基本算术的简化运算 操作的有效性 英文原文(Matrix and ...
- [Eigen中文文档] 稀疏矩阵快速参考指南
文档总目录 本文目录 稀疏矩阵初始化 构造 重置大小/预分配内存空间 赋值 逐元素插入 批量插入 指定位置或随机插入 矩阵属性 算术运算 加减 标量积 稀疏矩阵乘积 转置/伴随 排列 组件级操作 其他 ...
- [Eigen中文文档] 切片和索引
专栏总目录 本文目录 概述 基本的切片 编译时的大小和步长 倒序 索引序列 自定义索引列表 英文原文(Slicing and Indexing) 本文介绍了如何使用操作运算符operator()索引行 ...
- eigen之eigen中文文档
GitHub - growinguptogether/EigenDocInChinese: Eigen3.3.7 Doc中文版
- PyTorch官方中文文档:torch.optim 优化器参数
内容预览: step(closure) 进行单次优化 (参数更新). 参数: closure (callable) –...~ 参数: params (iterable) – 待优化参数的iterab ...
- golang中文文档_Golang 标准库 限流器 time/rate 设计与实现
限流器是后台服务中十分重要的组件,在实际的业务场景中使用居多,其设计在微服务.网关.和一些后台服务中会经常遇到.限流器的作用是用来限制其请求的速率,保护后台响应服务,以免服务过载导致服务不可用现象出现 ...
- springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列
源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...
- 使用编译器——Solidity中文文档(8)
写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第八部分<使用编译器>,特发布出来邀请solidity爱好者.开发者做公开 ...
最新文章
- python连接oracle
- postgreSql 常用操作总结
- js中引用类型赋值(拷贝)问题
- 博文视点读书节第六日丨产品大咖书单阿里云专家直播预告,更有超值代金券手慢无
- win10 电池测试软件,Win10电池检测方法及查看Win10电池检测报告说明
- 推挽输出和开漏输出详解
- 2017年终总结——恍恍惚惚又一年
- 解决pycharm下载第三方库速度慢的问题
- 使用jQuery用键盘去控制图片移动
- C++ STL求全排列和组合
- 协议:GRE;collisions
- 获取行政边界经纬度数据
- 使用Adobe Illustrate进行科研论文图片排版
- 什么是SAP GUI的client
- Sqlmap -- POST注入
- java个人博客系统代码下载_java个人博客系统代码
- Kubernetes----Job控制器
- ios5.1.1越狱实践
- 大数据Hive(一):​​​​​​​Hive基本概念
- 按需视觉识别:愿景和初步方案
热门文章
- 网络测试-2G、3G、4G网速参考
- CSS3实现文字流光渐变特效
- java编译找不到符号_编译java代码时报错找不到符号
- Redis:发布订阅机制
- 商品销售额持续下滑可视化分析
- 简述SOA和微服务的概念以及两者之间的关系和异同
- layUI框架表格中图片展示完整实例
- 论文阅读 [TPAMI-2022] Multiview Clustering: A Scalable and Parameter-Free Bipartite Graph Fusion Method
- Python的元组(tuple)类型
- JavaScript:使用键盘/鼠标来移动标签