gpt4 book ai didi

c++ - 什么时候在 C++ 中使用 out 参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:56 24 4
gpt4 key购买 nike

假设我的成员函数需要同时返回 std::vector<std::pair<MyClass,double>>和一个 double .两者都是作为同一算法的一部分计算的:我需要它们都从 same 成员函数返回。 (即,我不能轻易拥有两个独立的功能;它需要重复的代码和性能开销。)

我读到最好避免使用参数 in these quidelines ,即:

F.20: For "out" output values, prefer return values to output parameters.

所以我的代码如下所示:

 std::pair<std::vector<std::pair<MyClass,double>>,double> 
computeTransitionsAndCost(double input);

(A std::pair<MyClass,double> 是一个转换,因此得名。)

如果没有 out 参数,这将是

 std::vector<std::pair<MyClass,double>> computeTransitions(double input, double& costOut); 

在后面的代码中,用户更清楚函数返回什么:一个对列表。但是指南是反对它的,因为

A return value is self-documenting, whereas a & could be either in-out or out-only and is liable to be misused.

有什么方法既能遵守准则,又能确保代码的用户清楚返回值代表什么?

最佳答案

为什么不返回如下的组合?

struct ComputedTransitions
{
struct Transition
{
MyClass description;
double weight;
};
std::vector<Transition> transitions;
double cost;
};

ComputedTransitions computeTransitions(double input);

这将使您既可以为返回值的元素赋予有意义的名称,又可以将所有相关数据放入一个结构中。

关于c++ - 什么时候在 C++ 中使用 out 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455836/

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