Diferencia entre la lista de reenvío y la lista en C++

Forward List es un contenedor de secuencias que permite el acceso secuencial unidireccional a sus datos. Contiene datos del mismo tipo. En STL , se implementó utilizando la Lista de enlaces únicos , que requiere un tiempo constante para la inserción y eliminación. Los elementos de la lista de reenvío están dispersos en la memoria y el orden se mantiene asociando cada elemento de la lista con el siguiente elemento de la lista a través de un enlace. Por lo tanto, hace un uso eficiente de la memoria. Se ha introducido a partir de la versión C++11.

Implementación de la lista de reenvío: 

C++

// CPP Program to demonstrate forward list
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    // Declaring forward list
    forward_list<int> flist1;
 
    // Assigning values using assign()
    flist1.assign({ 10, 12, 13, 15 });
 
    // Displaying forward list
    cout << "The elements of forward list are : ";
    for (auto a : flist1)
        cout << a << " ";
    return 0;
}
Producción: 

The elements of forward list are : 10 12 13 15

 

List también es un contenedor de secuencias que permite el acceso secuencial bidireccional a sus datos. Contiene datos del mismo tipo. En STL, se ha implementado utilizando Lista doblemente enlazada y requiere un tiempo constante para la inserción y eliminación. Permite la asignación de memoria no contigua. Cada elemento de la lista está asociado con un enlace al elemento que le sigue y le precede. Se usa ampliamente en algoritmos de clasificación debido a su tiempo constante de inserción y eliminación y acceso secuencial bidireccional.

Implementación de Lista:  

C++

// CPP Program to demonstrate list
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    // Declaring a list
    list<int> list1;
 
    // Assigning values using assign()
    list1.assign({ 1, 2, 10, 15 });
 
    // Displaying list
    cout << "The elements of list are : ";
    for (auto a : list1)
        cout << a << " ";
    return 0;
}
Producción: 

The elements of list are : 1 2 10 15

 

Diferencia entre lista de reenvío y lista

Lista de reenvíos

Lista

Implementado usando una lista enlazada individualmente Implementado usando la lista doblemente enlazada
Consume relativamente menos memoria Consume relativamente más memoria
Menos sobrecarga en elementos de inserción y eliminación debido a menos puntero por Node, por lo que brinda un mejor rendimiento. Más sobrecarga en elementos de inserción y eliminación debido a más puntero por Node, por lo que ofrece un rendimiento deficiente.
Acceso secuencial en dirección de avance Acceso secuencial en dirección hacia adelante y hacia atrás
Más eficiente que la lista de reenvío. Menos eficiente que la lista de reenvío.
Generalmente se usa cuando se necesita acceso secuencial bidireccional, como para implementar enstringmiento en hash , representación de gráfico de lista de adyacencia , etc. Generalmente se usa cuando se necesita acceso secuencial unidireccional, como para implementar un árbol binario , una tabla hash , una pila , etc.

Publicación traducida automáticamente

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