📜  std :: tuple,std :: pair |在C++中使用元组和对从函数返回多个值

📅  最后修改于: 2021-05-25 18:32:29             🧑  作者: Mango

在某些情况下,解决问题时需要返回多个值(可能是不同的数据类型)。一种实现此目的的方法是使用指针,结构或全局变量,这已在此处进行了讨论。
还有另一种有趣的方法,可以在不使用上述方法的情况下执行相同的操作,即使用元组(用于返回多个值)和成对(用于两个值)。

我们可以将具有返回类型的函数声明为对或元组(以所需为准),并且可以打包要返回的值并返回打包的值集。返回的值可以在调用函数解压缩。

元组

  • 元组是一个能够容纳元素集合的对象,其中每个元素可以具有不同的类型。
  • 类模板std::tuple是固定大小的异构值集合

一对

  • 此类将一对值(可能是不同类型)耦合在一起
  • 一对是带有两个元素的std :: tuple的特殊情况

注意:Tuple也可以用于返回两个值,而不是使用pair。

#include
using namespace std;
  
// A Method that returns multiple values using
// tuple in C++.
tuple foo(int n1, int n2)
{
    // Packing values to return a tuple
    return make_tuple(n2, n1, 'a');             
}
  
// A Method returns a pair of values using pair
std::pair foo1(int num1, int num2)
{
    // Packing two values to return a pair 
    return std::make_pair(num2, num1);            
}
  
int main()
{
    int a,b;
    char cc;
      
    // Unpack the elements returned by foo
    tie(a, b, cc) = foo(5, 10);      
      
    // Storing  returned values in a pair 
    pair p = foo1(5,2);  
      
    cout << "Values returned by tuple: ";
    cout << a << " " << b << " " << cc << endl;
      
    cout << "Values returned by Pair: ";
    cout << p.first << " " << p.second;
    return 0;
}

输出:

Values returned by tuple: 10 5 a
Values returned by Pair: 2 5
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”