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; }
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; }
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