Reenviar lista y lista de tuplas en C++ con ejemplos

¿Qué es la lista de reenvío?

La lista de reenvío en STL se usa para implementar una lista enlazada individualmente. Se introdujo desde C++ 11 en adelante, las listas de reenvío son más útiles que otros contenedores en las operaciones de inserción, eliminación y movimiento (como ordenar) y permiten la inserción y eliminación constante de elementos en el tiempo. 
Se diferencia de la lista por el hecho de que la lista de reenvío realiza un seguimiento de la ubicación solo del siguiente elemento, mientras que la lista realiza un seguimiento de los elementos anterior y siguiente, lo que aumenta el espacio de almacenamiento necesario para almacenar cada elemento. 
El inconveniente de una lista hacia adelante es que no se puede iterar hacia atrás y no se puede acceder directamente a sus elementos individuales. 
La lista de reenvío se prefiere a la lista cuando solo se requiere un recorrido hacia adelante (al igual que se prefiere la lista de enlaces simples a la lista de enlaces dobles) ya que podemos ahorrar espacio. Algunos casos de ejemplo son, enstringmiento en hashing, representación de lista de adyacencia del gráfico, etc.

Funciones asociadas con la lista de reenvío:

  • push_front() : esta función se usa para insertar el elemento en la primera posición en una lista hacia adelante. El valor de esta función se copia en el espacio antes del primer elemento del contenedor. El tamaño de la lista de reenvío aumenta en 1.
  • pop_front(): esta función se utiliza para eliminar el primer elemento de la lista.
  • empty() : Devuelve si la lista está vacía (1) o no (0).

¿Qué es Lista?

Las listas son contenedores de secuencias que permiten la asignación de memoria no contigua. En comparación con el vector, la lista tiene un recorrido lento, pero una vez que se ha encontrado una posición, la inserción y la eliminación son rápidas. Normalmente, cuando decimos una Lista, hablamos de una lista doblemente enlazada. Para implementar una lista de enlace simple, usamos una lista de reenvío. 

Funciones asociadas a una lista:

  • front() : Devuelve el valor del primer elemento de la lista.
  • back() : Devuelve el valor del último elemento de la lista.
  • push_front(x) : Agrega un nuevo elemento ‘x’ al principio de la lista.
  • push_back(x) : Agrega un nuevo elemento ‘x’ al final de la lista.
  • empty() : Devuelve si la lista está vacía (1) o no (0).

¿Qué es Tupla?

Una tupla en C++ es un objeto que tiene la capacidad de agrupar varios elementos. Los elementos pueden ser del mismo tipo así como diferentes tipos de datos. Se puede acceder al orden en el que se inicializan los elementos de la tupla en el mismo orden.

Funciones asociadas a una tupla:

1. make_tuple(): Se utiliza para asignar tuplas con valores. Los valores pasados ​​deben estar en orden con los valores declarados en la tupla.
2. 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 la tupla en particular.

Reenviar lista de tuplas

En C++, una lista de tuplas hacia adelante es una lista hacia adelante en la que cada elemento es una tupla en sí misma. Aunque una tupla puede contener más o menos elementos, por simplicidad hemos usado tuplas que tienen solo tres elementos. 

Sintaxis:

 lista_delantera<tupla<tipo de datos1, tipo de datos2, tipo de datos3> myForwardList;

Aquí, 

dataType1, dataType2 y dataType3 son tipos de datos similares o diferentes.

Ejemplo 1: a continuación se muestra el programa C++ para demostrar el funcionamiento de la lista de tuplas hacia adelante. 

C++

// C++ program to demonstrate 
// the working of forward list
// of tuples
#include <bits/stdc++.h>
using namespace std;
  
// Function to print forward 
// list elements
void print(forward_list<tuple<int, int, 
           int>> &forwardListOftuples)
{
  for (auto currentTuple : forwardListOftuples) 
  {
    // Each element of the forward list is
    // a tuple itself
    tuple<int, int, int> tuple = currentTuple;
  
    cout << "[ ";
  
    // Printing tuple elements
    cout << get<0>(currentTuple) << ' ' << 
            get<1>(currentTuple) << ' ' << 
            get<2>(currentTuple);
    cout << ']';
    cout << '\n';
  }
}
  
// Driver code
int main()
{
  // Declaring a forward list of tuples
  // having integer values only
  forward_list<tuple<int, int, int> > 
    forwardListOftuples;
  
  // Declaring a tuple
  tuple<int, int, int> tuple1;
  
  // Initializing the
  // tuple
  tuple1 = make_tuple(11, 22, 33);
  
  // Push the tuple at the back
  // in the forward list
  forwardListOftuples.push_front(tuple1);
  
  // Declaring another tuple
  tuple<int, int, int> tuple2;
  
  // Initializing the
  // tuple
  tuple2 = make_tuple(33, 44, 55);
  
  // Push the tuple at the front
  // in the forward list
  forwardListOftuples.push_front(tuple2);
  
  // Declaring another tuple
  tuple<int, int, int> tuple3;
  
  // Initializing the tuple
  tuple3 = make_tuple(55, 66, 77);
  
  // Push the tuple at the front
  // in the forward list
  forwardListOftuples.push_front(tuple3);
  
  // Declaring another tuple
  tuple<int, int, int> tuple4;
  
  // Initializing the tuple
  tuple4 = make_tuple(77, 88, 99);
  
  // Push the tuple at the front
  // in the forward list
  forwardListOftuples.push_front(tuple4);
  
  // Calling print function
  print(forwardListOftuples);
  return 0;
}

Producción:

[ 77 88 99]
[ 55 66 77]
[ 33 44 55]
[ 11 22 33]

Ejemplo 2: a continuación se muestra el programa C++ para demostrar el funcionamiento de la lista de tuplas hacia adelante.

C++

// C++ program to demonstrate 
// the working of forward list
// of tuples
#include <bits/stdc++.h>
using namespace std;
  
// Function to print forward 
// list elements
void print(forward_list<tuple<string, string, 
           bool>> &forwardListOftuples)
{
  for (auto currentTuple : forwardListOftuples) 
  {
    // Each element of the forward list is
    // a tuple itself
    tuple<string, string, bool> tuple = 
                          currentTuple;
  
    cout << "[ ";
  
    // Printing tuple elements
    cout << get<0>(currentTuple) << ' ' << 
            get<1>(currentTuple) << ' ' << 
            get<2>(currentTuple);
    cout << ']';
    cout << '\n';
  }
}
  
// Driver code
int main()
{
  // Declaring a forward list of tuples
  // having first two values of string 
  // type and third value as bool type
  forward_list<tuple<string, string, bool>> 
    forwardListOftuples;
  
  // Declaring a tuple
  tuple<string, string, bool> tuple1;
  
  // Initializing the
  // tuple
  tuple1 = make_tuple("GeeksforGeeks", 
                      "Computer Science", 0);
  
  // Push the tuple at the back
  // in the forward list
  forwardListOftuples.push_front(tuple1);
  
  // Declaring another tuple
  tuple<string, string, bool> tuple2;
  
  // Initializing the
  // tuple
  tuple2 = make_tuple("Java", "C++", 1);
  
  // Push the tuple at the front
  // in the forward list
  forwardListOftuples.push_front(tuple2);
  
  // Declaring another tuple
  tuple<string, string, bool> tuple3;
  
  // Initializing the tuple
  tuple3 = make_tuple("GFG", "C", 1);
  
  // Push the tuple at the front
  // in the forward list
  forwardListOftuples.push_front(tuple3);
  
  // Declaring another tuple
  tuple<string, string, bool> tuple4;
  
  // Initializing the tuple
  tuple4 = make_tuple("Swift", "Python", 0);
  
  // Push the tuple at the front
  // in the forward list
  forwardListOftuples.push_front(tuple4);
  
  // Calling print function
  print(forwardListOftuples);
  return 0;
}

Producción:

[Swift Python 0]
[GFG C 1]
[Java C++ 1]
[GeeksforGeeks Informática 0]

Lista de tuplas

En C++, una lista de tuplas es una lista en la que cada elemento es una tupla en sí misma. Aunque una tupla puede contener más o menos elementos, por simplicidad hemos usado tuplas que tienen solo tres elementos. 

Sintaxis:

lista<tupla<tipodatos1, tipodatos2, tipodatos3> miLista;

Aquí,

dataType1, dataType2 y dataType3 son tipos de datos similares o diferentes.

Ejemplo 1: A continuación se muestra el programa C++ para demostrar el funcionamiento de la lista de tuplas.

C++

// C++ program to demonstrate 
// the working of list of tuples
#include <bits/stdc++.h>
using namespace std;
  
// Function to print
// list elements
void print(list<tuple<int, int, 
           int>> &listOftuples)
{
  for (auto currentTuple : listOftuples) 
  {
    // Each element of the List is
    // a tuple itself
    tuple<int, int, int> tuple = currentTuple;
  
    cout << "[ ";
  
    // Printing tuple elements
    cout << get<0>(currentTuple) << ' ' << 
            get<1>(currentTuple) << ' ' << 
            get<2>(currentTuple);
    cout << ']';
    cout << '\n';
  }
}
  
// Driver code
int main()
{
  // Declaring a List of tuples
  // having all values of integer type
  list<tuple<int, int, int>> 
  listOftuples;
  
  // Declaring a tuple
  tuple<int, int, int> tuple1;
  
  // Initializing the
  // tuple
  tuple1 = make_tuple(11, 22, 33);
  
  // Push the tuple at the back
  // in the List
  listOftuples.push_front(tuple1);
  
  // Declaring another tuple
  tuple<int, int, int> tuple2;
  
  // Initializing the
  // tuple
  tuple2 = make_tuple(33, 44, 55);
  
  // Push the tuple at the front
  // in the List
  listOftuples.push_front(tuple2);
  
  // Declaring another tuple
  tuple<int, int, int> tuple3;
  
  // Initializing the tuple
  tuple3 = make_tuple(55, 66, 77);
  
  // Push the tuple at the front
  // in the List
  listOftuples.push_front(tuple3);
  
  // Declaring another tuple
  tuple<int, int, int> tuple4;
  
  // Initializing the tuple
  tuple4 = make_tuple(77, 88, 99);
  
  // Push the tuple at the front
  // in the List
  listOftuples.push_front(tuple4);
  
  // Calling print function
  print(listOftuples);
  return 0;
}

Producción:

[ 77 88 99]
[ 55 66 77]
[ 33 44 55]
[ 11 22 33]

Ejemplo 2: A continuación se muestra el programa C++ para demostrar el funcionamiento de la lista de tuplas.

C++

// C++ program to demonstrate 
// the working of list of tuples
#include <bits/stdc++.h>
using namespace std;
  
// Function to print
// list elements
void print(list<tuple<string, string, 
           bool>> &listOftuples)
{
  for (auto currentTuple : listOftuples) 
  {
    // Each element of the List is
    // a tuple itself
    tuple<string, string, bool> tuple = 
                          currentTuple;
  
    cout << "[ ";
  
    // Printing tuple elements
    cout << get<0>(currentTuple) << ' ' << 
            get<1>(currentTuple) << ' ' << 
            get<2>(currentTuple);
    cout << ']';
    cout << '\n';
  }
}
  
// Driver code
int main()
{
  // Declaring a List of tuples
  // having first two values as string type
  // and third value is of bool type
  list<tuple<string, string, bool>> 
  listOftuples;
  
  // Declaring a tuple
  tuple<string, string, bool> tuple1;
  
  // Initializing the
  // tuple
  tuple1 = make_tuple("GeeksforGeeks", 
                      "Computer Science", 0);
  
  // Push the tuple at the back
  // in the List
  listOftuples.push_front(tuple1);
  
  // Declaring another tuple
  tuple<string, string, bool> tuple2;
  
  // Initializing the
  // tuple
  tuple2 = make_tuple("Java", "C++", 1);
  
  // Push the tuple at the front
  // in the List
  listOftuples.push_front(tuple2);
  
  // Declaring another tuple
  tuple<string, string, bool> tuple3;
  
  // Initializing the tuple
  tuple3 = make_tuple("GFG", "C", 1);
  
  // Push the tuple at the front
  // in the List
  listOftuples.push_front(tuple3);
  
  // Declaring another tuple
  tuple<string, string, bool> tuple4;
  
  // Initializing the tuple
  tuple4 = make_tuple("Swift", "Python", 0);
  
  // Push the tuple at the front
  // in the List
  listOftuples.push_front(tuple4);
  
  // Calling print function
  print(listOftuples);
  return 0;
}

Producción:

[Swift Python 0]
[GFG C 1]
[Java C++ 1]
[GeeksforGeeks Informática 0]

Publicación traducida automáticamente

Artículo escrito por bhuwanesh 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 *