c++ - 包含 boost::numeric::ublas::matrix<double> 的类的运算符重载

标签 c++ boost operator-overloading ublas

我有一个类,其中包含一些 boost::numeric::ublas::matrix 。我想重载该类的运算符 (+-*/=),以便我可以用一个语句对一组矩阵进行操作。

然而,这似乎需要我的类的临时实例来携带值而不修改原始类。这对我来说很有意义,但是,当我在函数中创建一个新实例并返回它时,我得到:

警告:返回了对局部变量“temp”的引用

我对 C++ 很陌生,运算符重载的示例似乎都返回新的临时对象。我还想避免实例化新矩阵的开销,这导致我循环遍历所有元素。我该怎么办?性能是一个问题。

最佳答案

如果您已经在使用 boost,我强烈建议使用 boost::operators以及您的示例。

您将获得多项好处:

  1. 您只需重载 +=/-=/= 运算符,并免费获取 +/-/ 运算符。
  2. 您将获得自由实现的运算符的最佳实现。
  3. 您将解决您发布的问题,因为您将实现 = 版本,这需要较少的设计。

关于c++ - 包含 boost::numeric::ublas::matrix<double> 的类的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986325/

相关文章:

c++ - 是否可以在不使用指针的情况下将变量的范围扩展到 if 语句之外?

c++ - Turbo C++ 的字符串问题

Boost.MPI 与 Boost.Asio

c++ - 安全地取消 boost asio 截止时间计时器

c# - (C#) 重载 == 运算符时出现问题

c++ - 排序 vector 时运算符重载的编译错误

c++ - 神秘的 For 循环错误

c++ - C++ 中的二维复杂数组

c++ - boost::unordered_map 维护插入顺序?

functional-programming - Clojure 中的运算符重载