关于c ++:如何从函数返回两个值?

How do I return two values from a function?

本问题已经有最佳答案,请猛点这里访问。

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


std::pair涵盖返回两个值,std::tuple概括为任意数量的值。借助std::tuplestd::tie实用程序功能,调用者也可以将结果接收到单独的变量中,从而避免了将它们一一提取的需求,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
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::pair,并且std::pair与两个元素的std::tuple完全兼容)。


1
2
3
4
5
6
7
8
typedef struct {
    int a, b;
} tuple;

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


有三种可能的情况。

方法1使用全局数组。

方法2使用指针。

方法3使用结构。

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


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

或者,您可以从函数返回数组以获取多个值。

有很多方法。