缩短C++函数输入参数?
Shorten C++ function input parameters?
我们小组最近转向了 C++。我的主管很友好地提供了一个由一堆 类 和相关方法组成的模板。我发现的问题是大多数方法需要很多输入参数,像这样:
void AdvectionReactionDiffusion::boundary(const arma::Col<double>& n, const arma::Col<double>& u, const arma::Col<double>& uhat, const arma::Col<double>& fhat, arma::Col<double>& fb, arma::Mat<double>& fb_u, arma::Mat<double>& fb_uhat, arma::Mat<double>& fb_fhat) const {}
那么,为了更好的可读性和更少的人为错误,有什么好的方法可以在不破坏当前代码结构的情况下缩短这些输入?
我来自 Python 背景,我将在 Python 中做的是将相关输入包装在命名元组中并将其扔给函数。但是我不知道如何在 C++ 中应用类似的技巧。
将它与 cpp
文件中的 using namespace arma;
相结合( 永远不会在 header!!! 中)你可以做到
void AdvectionReactionDiffusion::boundary(const vec& n,
const vec& u,
const vec& uhat,
const vec& fhat,
vec& fb,
mat& fb_u,
mat& fb_uhat,
mat& fb_fhat) const {}
你标记了这个问题 c++11 所以除了输出参数你还可以 return a std::tuple
.
std::tuple<vec,mat,mat,mat>
AdvectionReactionDiffusion::boundary(const vec& n,
const vec& u,
const vec& uhat,
const vec& fhat) const {}
然后您可以使用 std::tie
解压缩
std::tie(fb, fb_u, fb_uhat, fb_fhat) = ARD.boundary(n,u,uhat,fhat);
你当然可以对输入参数做同样的事情。
我们小组最近转向了 C++。我的主管很友好地提供了一个由一堆 类 和相关方法组成的模板。我发现的问题是大多数方法需要很多输入参数,像这样:
void AdvectionReactionDiffusion::boundary(const arma::Col<double>& n, const arma::Col<double>& u, const arma::Col<double>& uhat, const arma::Col<double>& fhat, arma::Col<double>& fb, arma::Mat<double>& fb_u, arma::Mat<double>& fb_uhat, arma::Mat<double>& fb_fhat) const {}
那么,为了更好的可读性和更少的人为错误,有什么好的方法可以在不破坏当前代码结构的情况下缩短这些输入?
我来自 Python 背景,我将在 Python 中做的是将相关输入包装在命名元组中并将其扔给函数。但是我不知道如何在 C++ 中应用类似的技巧。
将它与 cpp
文件中的 using namespace arma;
相结合( 永远不会在 header!!! 中)你可以做到
void AdvectionReactionDiffusion::boundary(const vec& n,
const vec& u,
const vec& uhat,
const vec& fhat,
vec& fb,
mat& fb_u,
mat& fb_uhat,
mat& fb_fhat) const {}
你标记了这个问题 c++11 所以除了输出参数你还可以 return a std::tuple
.
std::tuple<vec,mat,mat,mat>
AdvectionReactionDiffusion::boundary(const vec& n,
const vec& u,
const vec& uhat,
const vec& fhat) const {}
然后您可以使用 std::tie
std::tie(fb, fb_u, fb_uhat, fb_fhat) = ARD.boundary(n,u,uhat,fhat);
你当然可以对输入参数做同样的事情。