c++ - 带有 Armadillo 可选参数的函数

标签 c++ function armadillo

我需要构建一个带有可选参数的函数。看来我应该给参数一个默认值。例如,当可选参数类型为 double 或 integer 时,这种方法非常有效。我可以将默认值设置为 0 或 NULL。但假设可选参数是 Armadillo 矩阵。我不知道要定义 NULL 矩阵。我检查了这段代码,但它不起作用。

  mat test(mat& X, mat& Y = zeros(2,2).clear()){
  if(Y.empty()){return X;}
    return X*Y;
  }

我想将 Y 的默认值设置为空(或空)矩阵。然后我可以使用 if 命令来检查 Y 是否为空。

最佳答案

我想你想要 is_empty 而不是 empty

成员函数resetdocumented使矩阵为空。但我怀疑默认构造的矩阵也是空的。

但是你有一个更大的问题 - 你通过非常量引用传递参数 Y,所以你根本不能使用临时表达式作为默认参数。 (通过 const 引用传递会更糟,因为你最终会得到一个悬空引用。)我建议要么通过值传递,要么通过 const 引用传递并为你的空矩阵定义一个静态常量:

mat const Empty = mat();
mat test(mat const & X, mat const & Y = Empty) { ... }

mat test(mat X, mat Y = mat()) { ... }

关于c++ - 带有 Armadillo 可选参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48006968/

相关文章:

php - 我想从一个 php 文件中获取包含 mysql 查询的变量,并编写将在另一个 php 文件中打印查询内容的循环

c++ - Armadillo 中 find() 的补充索引

c++ - Armadillo C++ : How to modify multiple array elements of a matrix using multiple elements from another matrix, 专门在立方体结构中?

c++ - 在没有 Midas.dll C++ 的情况下部署项目

c++ - 初学者对类和函数有疑问

c++ - 掷硬币直到出现 3 个正面

javascript - 如何关闭通过另一个函数的 polyfill 生成的 showModalDialog() ?

c++ - 最大公因数函数

c++ - 使用 Armadillo 时出错

c++ - 具有基于位置的枚举编译错误的结构