构造函数效率低下,适用于按值从函数返回对象的情况
constructor inefficiency for cases when an object is returned from a function by value
我的类矩阵有两个构造函数,包括执行深度复制的复制函数。这样的解决方案非常适合复制另一个对象的明显情况。虽然在以下情况下:
Matrix m = m1 * m2; // for earlier constructed m1 & m2
在我看来,这是低效的,因为我在乘法运算中创建了一个对象,只是为了复制它而不是直接分配给 m。矩阵可以占据非常巨大的内存。如何更好地处理,专业人士的普遍做法是什么?
矩阵作为二维列表动态实现,就像稀疏矩阵一样。
附言我知道乘法的结果是局部的。然而,尽管如此,我还是认为,如果没有上述过度计算,它可以以某种方式更好地处理。
在 C++11 中,您可以创建一个移动构造函数,在您的情况下应该更快。我不打算解释如何做到这一点,因为已经有很多教程,例如:http://thbecker.net/articles/rvalue_references/section_01.html
您也可以尝试表达式模板,这些模板可以很好地优化这样的代码,尽管语法看起来会有所不同。请参阅 http://en.wikipedia.org/wiki/Expression_templates 以开始使用。
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量