如何从函数返回两个值?

时间:2016-01-30 05:04:45

标签: c++ function function-prototypes

如何设计一个函数原型,允许单个函数同时查找并返回数组中的最低值和最高值?谢谢。

4 个答案:

答案 0 :(得分:16)

std::pair涵盖了返回两个值,std::tuple概括为任意数量的值。使用std::tuple' std::tie utility function,调用者也可以将结果接收到单独的变量中,从而无需逐个提取它们,例如:

std::tuple<int, int> returns_two() 
{
  return std::make_tuple(1, -1);
}

int main() {
  int a, b;

  std::tie(a, b) = returns_two();

  // a and b are now 1 and -1, no need to work with std::tuple accessors
  std::cout << "A" << a << std::endl;
}

当然,在这种情况下,您实际上不需要滚动自己的代码来返回输入的最小值和最大值,因为有一个模板化的实用程序函数已经执行此操作,std::minmax(对于两个离散args和初始化列表)和std::minmax_element(对于迭代器定义的范围)(返回std::pairstd::pair与两个元素的std::tuple完全兼容)

答案 1 :(得分:1)

typedef struct {
    int a, b;
} tuple;

tuple example() {
    tuple ret = {1, 2};
    return ret;
}

答案 2 :(得分:0)

使用stl pair data type返回两个值或用户定义struct data type以从函数返回更多值。

或者您可以从函数返回多个值的数组。

有很多方法。

答案 3 :(得分:0)

有三种可能的情况..

方法1 正在使用全局数组。

方法2 正在使用指针。

方法3 正在使用结构。

使用变量不能从C ++函数返回多个值。您只能返回具有多个值的数据结构,如结构或数组。