logo

Tuplas en C++

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.  Las tuplas son una estructura de datos versátil para agrupar valores. Para comprender cómo utilizar tuplas en C++ y sus aplicaciones, Curso C++ proporciona tutoriales y ejemplos completos.

Operaciones sobre tupla

1. obtener(): get() se utiliza 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 tupla en particular. 



2. hacer_tuple(): make_tuple() se utiliza para asignar valores a tuplas. Los valores pasados ​​deben estar en orden con los valores declarados en tupla. 

CPP
#include    #include  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 

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

3. tamaño_tupla: Devuelve el número de elementos presentes en la tupla. 



CPP
#include    #include  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;  return 0; } 

Producción
The size of tuple is: 3

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

CPP
#include    #include  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. empate() : El trabajo de tie() es descomprimir los valores de la tupla en variables separadas. Hay dos variantes de tie() con y sin 'ignorar': 'ignorar' ignora un elemento de tupla en particular y evita que se descomprima.



CPP
#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<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. 

CPP
#include    #include  // 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) << ' '   << get<2>(tup3) << ' ' << get<3>(tup3) << ' '   << 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