Tuplas en C++

¿Qué es una tupla?
Una tupla es un objeto que puede contener varios elementos. Los elementos pueden ser de diferentes tipos de datos. Los elementos de las tuplas se inicializan como argumentos en el orden en que se accederá a ellos.

Operaciones en tupla : –

1. get() :- get() se usa para acceder a los valores de la tupla y modificarlos, acepta el índice y el nombre de la tupla como argumentos para acceder a un elemento de la tupla en particular.

2. make_tuple() :- make_tuple() se usa para asignar tupla con valores. Los valores pasados ​​deben estar en orden con los valores declarados en tupla.

// C++ code to demonstrate tuple, get() and make_pair()
#include<iostream>
#include<tuple> // for tuple
using namespace std;
int main()
{
    // Declaring tuple
    tuple <char, int, float> 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;
}

Producción:

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

En el código anterior, get() modifica el primer y tercer valor de la tupla.

3. tuple_size :- Devuelve el número de elementos presentes en la tupla.

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

Producción:

The size of tuple is : 3

4. swap() :- El swap(), intercambia los elementos de las dos tuplas diferentes.

//C++ code to demonstrate swap()
#include<iostream>
#include<tuple> // for swap() and tuple
using namespace std;
int main()
{
  
    // Initializing 1st tuple
    tuple <int,char,float> tup1(20,'g',17.5);
      
    // Initializing 2nd tuple
    tuple <int,char,float> 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;
}

Producción:

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() :- El trabajo de tie() es descomprimir los valores de tupla en variables separadas. Hay dos variantes de tie(), con y sin «ignorar», el «ignorar» ignora un elemento de tupla en particular y evita que se descomprima.

// C++ code to demonstrate working of tie()
#include<iostream>
#include<tuple> // 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 <int,char,float> 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;
  
}

Producción:

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

6. tuple_cat() :- Esta función concatena dos tuplas y devuelve una nueva tupla.

// C++ code to demonstrate working of tuple_cat()
#include<iostream>
#include<tuple> // for tuple_cat() and tuple
using namespace std;
int main()
{
    // Initializing 1st tuple
    tuple <int,char,float> tup1(20,'g',17.5);
  
    // Initializing 2nd tuple
    tuple <int,char,float> 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;
}

Producción:

The new tuple elements in order are : 20 g 17.5 30 f 10.5

Este artículo es una contribución de Manjeet Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *