在 C++ 中返回多个矩阵(犰狳库)



我在C++使用犰狳图书馆。首先,我计算一个特殊的矩阵(在我的代码中:P),然后我计算QR分解(在我的代码中:Q)。 最后,我需要将 P 和 Q 以及另一个矩阵 T 返回给我的主函数。

#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
double phi(int n, int q){
...
  mat P(n,n);
  P=...
   mat Q,R;
   qr(Q,R,P);
return P:
return Q;
return Q;
...
 }
int main() {
    ...
    int n,q;
    cout<<"Enter the value of parameters n and q respectively:"<<endl;
    cin>> n>>q;
    phi(n,q);
...
}

我正在寻找一种方法来返回犰狳中的这些矩阵,而无需使用指针和引用。在这里,我的矩阵很大,通常是 500*500 或 1000*1000。有人有解决方案吗?事先致谢

下面是一个使用 std::

tuple 和 std::tie 的示例

#include <iostream>
#include <armadillo>
using namespace arma;
std::tuple<mat, mat> phi(int const n, int const q)
{
    ...
    mat P(n, n);
    P = ...
    mat Q, R;
    qr(Q, R, P);
    return std::make_tuple(P, Q);
}
int main()
{
    ...
    int n, q;
    std::cout << "Enter the value of parameters n and q respectively:" << std::endl;
    std::cin >> n >> q;
    mat P, Q;
    std::tie(P, Q) = phi(n,q);
    ...
}

使用 C++17(和结构化绑定声明),您可以像这样操作:

#include <iostream>
#include <armadillo>
using namespace arma;
std::tuple<mat, mat> phi(int const n, int const q)
{
    ...
    mat P(n, n);
    P = ...
    mat Q, R;
    qr(Q, R, P);
    return {P, Q};
}
int main()
{
    ...
    int n,q;
    std::cout << "Enter the value of parameters n and q respectively:" << std::endl;
    std::cin >> n >> q;
    auto [P, Q] = phi(n,q);
    ...
}

相关内容

  • 没有找到相关文章

最新更新