📜  C++中的元组

📅  最后修改于: 2021-05-30 19:14:13             🧑  作者: Mango

什么是元组?
元组是可以容纳许多元素的对象。元素可以是不同的数据类型。元组的元素被初始化为参数,以便可以访问它们。

元组上的操作

1. get() :-get()用于访问元组值并对其进行修改,它接受索引和元组名称作为访问特定元组元素的参数。

2. make_tuple() :-make_tuple()用于为元组分配值。传递的值应与在元组中声明的值一致。

// C++ code to demonstrate tuple, get() and make_pair()
#include
#include // for tuple
using namespace std;
int main()
{
    // Declaring tuple
    tuple  geek;
  
    // Assigning values to tuple using make_tuple()
    geek = make_tuple('a', 10, 15.5);
  
    // Printing initial tuple values using get()
    cout << "The initial values of tuple are : ";
    cout << get<0>(geek) << " " << get<1>(geek);
    cout << " " << get<2>(geek) << endl;
  
    // Use of get() to change values of tuple
    get<0>(geek) = 'b';
    get<2>(geek) =  20.5;
  
     // Printing modified tuple values
    cout << "The modified values of tuple are : ";
    cout << get<0>(geek) << " " << get<1>(geek);
    cout << " " << get<2>(geek) << endl;
  
    return 0;
}

输出:

The initial values of tuple are : a 10 15.5
The modified values of tuple are : b 10 20.5

在上面的代码中,get()修改元组的第一和第三值。

3. tuple_size :-返回元组中存在的元素数。

//C++ code to demonstrate tuple_size
#include
#include // for tuple_size and tuple
using namespace std;
int main()
{
  
    // Initializing tuple
    tuple  geek(20,'g',17.5);
  
    // Use of size to find tuple_size of tuple
    cout << "The size of tuple is : ";
    cout << tuple_size::value << endl;
  
    return 0;
  
}

输出:

The size of tuple is : 3

4. swap() :-swap()交换两个不同元组的元素。

//C++ code to demonstrate swap()
#include
#include // for swap() and tuple
using namespace std;
int main()
{
  
    // Initializing 1st tuple
    tuple  tup1(20,'g',17.5);
      
    // Initializing 2nd tuple
    tuple  tup2(10,'f',15.5);
      
    // Printing 1st and 2nd tuple before swapping
    cout << "The first tuple elements before swapping are : ";
    cout <<  get<0>(tup1) << " " << get<1>(tup1) << " "
         << get<2>(tup1) << endl;
    cout << "The second tuple elements before swapping are : ";
    cout <<  get<0>(tup2) << " " << get<1>(tup2) << " " 
         << get<2>(tup2) << endl;
      
    // Swapping tup1 values with tup2
    tup1.swap(tup2);
      
    // Printing 1st and 2nd tuple after swapping
    cout << "The first tuple elements after swapping are : ";
    cout <<  get<0>(tup1) << " " << get<1>(tup1) << " " 
         << get<2>(tup1) << endl;
    cout << "The second tuple elements after swapping are : ";
    cout <<  get<0>(tup2) << " " << get<1>(tup2) << " " 
         << get<2>(tup2) << endl;
  
    return 0;
}

输出:

The first tuple elements before swapping are : 20 g 17.5
The second tuple elements before swapping are : 10 f 15.5
The first tuple elements after swapping are : 10 f 15.5
The second tuple elements after swapping are : 20 g 17.5

5. tie()tie()的工作是将元组值解包到单独的变量中。 tie()有两种变体,有和没有“ ignore”,“ ignore”将忽略特定的元组元素并阻止其解压缩。

// C++ code to demonstrate working of tie()
#include
#include // for tie() and tuple
using namespace std;
int main()
{   
    // Initializing variables for unpacking
    int i_val;
    char ch_val;
    float f_val;   
      
    // Initializing tuple
    tuple  tup1(20,'g',17.5);
  
    // Use of tie() without ignore
    tie(i_val,ch_val,f_val) = tup1;
      
    // Displaying unpacked tuple elements
    // without ignore
    cout << "The unpacked tuple values (without ignore) are : ";
    cout << i_val << " " << ch_val << " " << f_val;
    cout << endl;
      
    // Use of tie() with ignore
    // ignores char value
    tie(i_val,ignore,f_val) = tup1;
      
    // Displaying unpacked tuple elements
    // with ignore
    cout << "The unpacked tuple values (with ignore) are : ";
    cout << i_val  << " " << f_val;
    cout << endl;
  
    return 0;
  
}

输出:

The unpacked tuple values (without ignore) are : 20 g 17.5
The unpacked tuple values (with ignore) are : 20 17.5

6. tuple_cat() :-此函数连接两个元组并返回一个新的元组。

// C++ code to demonstrate working of tuple_cat()
#include
#include // for tuple_cat() and tuple
using namespace std;
int main()
{
    // Initializing 1st tuple
    tuple  tup1(20,'g',17.5);
  
    // Initializing 2nd tuple
    tuple  tup2(30,'f',10.5);
      
    // Concatenating 2 tuples to return a new tuple
    auto tup3 = tuple_cat(tup1,tup2);
      
    // Displaying new tuple elements
    cout << "The new tuple elements in order are : ";
    cout << get<0>(tup3) << " " << get<1>(tup3) << " ";
    cout << get<2>(tup3) << " " << get<3>(tup3) << " ";
    cout << get<4>(tup3) << " " << get<5>(tup3) << endl;
  
    return 0;
}

输出:

The new tuple elements in order are : 20 g 17.5 30 f 10.5
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”