当前位置:  开发笔记 > 编程语言 > 正文

在c ++中返回多个矩阵(Armadillo库)

如何解决《在c++中返回多个矩阵(Armadillo库)》经验,为你挑选了1个好方法。

我正在使用C++中的Armadillo库.首先,我计算一个特殊的矩阵(在我的代码中:P),然后我计算QR分解(在我的代码中:Q).最后,我需要将P和Q以及另一个矩阵T返回到我的主函数.

#include 
#include 
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:"<> n>>q;
    phi(n,q);
...
}

我正在寻找一种在犰狳中使用指针和参考来返回这些矩阵的方法.这里我的矩阵很大,通常是500*500或1000*1000.有没有人有解决方案?先谢谢



1> Jonas..:

下面是使用std :: tuple和std :: tie的示例

#include 
#include 

using namespace arma;

std::tuple 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 
#include 

using namespace arma;

std::tuple 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);
    ...
}

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有