是否有从 C++ 函数返回多个值的首选方法?例如,假设一个函数将两个整数相除并返回商和余数。我经常看到的一种方法是使用参考参数:
void divide(int dividend, int divisor, int& quotient, int& remainder);
一种变体是返回一个值并通过引用参数传递另一个值:
int divide(int dividend, int divisor, int& remainder);
另一种方法是声明一个结构以包含所有结果并返回:
struct divide_result {
int quotient;
int remainder;
};
divide_result divide(int dividend, int divisor);
通常首选这些方法之一,还是有其他建议?
编辑:在现实世界的代码中,可能有两个以上的结果。它们也可能是不同的类型。
原文由 Fred Larson 发布,翻译遵循 CC BY-SA 4.0 许可协议
为了返回两个值,我使用
std::pair
(通常是 typedef’d)。您应该查看boost::tuple
(在 C++11 和更高版本中,有std::tuple
)以获得两个以上的返回结果。随着在 C++ 17 中引入结构化绑定,返回
std::tuple
可能应该成为公认的标准。