Return 用犰狳 C++ 从向量乘法中加倍

Return double from vector multiplication with Armadillo C++

你知道为什么我不能将向量乘法的结果存储在双精度中吗?

double A = rowvec({1,3,4})*vec({5,6,7});

它给出 "no suitable conversion function from "const arma::Glue"... "const double" exists.

矩阵向量乘法仍然是双倍的。 我该如何出行?

谢谢!

乘积的结果是一个名为arma::Glue的表达式模板,可以转换为1x1矩阵。要内联执行此操作并将其分配给使用 .eval() 显式对其进行双重评估,并采用唯一的元素 (0,0).

#include <armadillo>

int main() {
  using arma::rowvec;
  using arma::vec;
  double A = (rowvec({1,3,4})*vec({5,6,7})).eval()(0,0);
};

N.B.: 你是说 dot(a,b)?

#include <armadillo>

int main() {
  using arma::rowvec;
  using arma::vec;
  using arma::dot;
  double A = dot(rowvec({1,3,4}), vec({5,6,7}));
};