[英]return multiple matrices in c++ (Armadillo library)
我正在使用C ++中的Armadillo库。 首先,我计算一个特殊的矩阵(在我的代码中: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);
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.