gpt4 book ai didi

c++ - 缩短C++函数输入参数?

转载 作者:行者123 更新时间:2023-11-30 01:07:28 26 4
gpt4 key购买 nike

我们小组最近转向了 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++ 中应用类似的技巧。

最佳答案

如果您阅读 Col 上的文档和 Mat你会发现

enter image description here

enter image description here

将此与 using namespace arma; 结合在您的 cpp 文件中(从不在 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 {}

您标记了这个问题 所以除了输出参数,你还可以返回一个 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++ - 缩短C++函数输入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com