我正在使用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.有没有人有解决方案?先谢谢
下面是使用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); ... }