从 C++ 函数返回多个值

问题描述

为了返回两个值,我使用 a std::pair(通常是 typedef’d)。您应该查看boost::tuple(在 C++11 和更新版本中,有std::tuple)以获得两个以上的返回结果。

随着在 C++ 17 中引入结构化绑定,返回std::tuple可能应该成为公认的标准。

解决方法

是否有从 C++ 函数返回多个值的首选方法?例如,假设一个函数将两个整数相除并返回商和余数。我经常看到的一种方法是使用参考参数:

void divide(int dividend,int divisor,int& quotient,int& remainder);

一种变体是返回一个值并通过引用参数传递另一个值:

int divide(int dividend,int& remainder);

另一种方法是声明一个结构以包含所有结果并返回:

struct divide_result {
    int quotient;
    int remainder;
};

divide_result divide(int dividend,int divisor);

通常首选这些方法之一,还是有其他建议?

编辑:在现实世界的代码中,可能有两个以上的结果。它们也可能是不同的类型。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...