logo

Listar en la biblioteca de plantillas estándar de C++ (STL)

Las listas son secuencia contenedores 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 eliminación son rápidas (tiempo constante). Normalmente, cuando decimos una Lista, hablamos de una lista doblemente enlazada . Para implementar una lista unidireccional, utilizamos un lista_adelante .

std::lista es la clase del contenedor Lista. Es parte de la Biblioteca de plantillas estándar (STL) de C++ y se define dentro archivo de cabecera.



Sintaxis:

matemáticas aleatorias java
std::list name_of_list;>

Ejemplo:

C++








// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }>

>

>

Producción

gb vs mb
12 45 8 6>

En el ejemplo anterior, creamos un objeto std::list llamado lista gq y lo inicialicé usando una lista de inicializadores. Podemos inicializar los objetos std::list usando muchas formas diferentes mencionadas aquí.

Algunas operaciones básicas en std::list

  • frente() Devuelve el valor del primer elemento de la lista.
  • atrás() Devuelve el valor del último elemento de la lista.
  • empujar_front() Agrega un nuevo elemento 'g' al principio de la lista.
  • hacer retroceder() Agrega un nuevo elemento 'g' al final de la lista.
  • pop_front() Elimina el primer elemento de la lista y reduce el tamaño de la lista en 1.
  • pop_back() Elimina el último elemento de la lista y reduce el tamaño de la lista en 1.
  • insertar() Inserta nuevos elementos en la lista antes del elemento en una posición especificada.
  • tamaño() Devuelve el número de elementos de la lista.
  • comenzar() La función comenzar () devuelve un iterador que apunta al primer elemento de la lista.
  • fin() La función end() devuelve un iterador que apunta al último elemento teórico que sigue al último elemento.

El siguiente ejemplo demuestra el uso general de los contenedores de listas y sus funciones básicas en C++.

Ejemplo:

C++




// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::iterarlo;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>' '>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>' List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>' List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>' gqlist1.front() : '> << gqlist1.front();> >cout <<>' gqlist1.back() : '> << gqlist1.back();> >cout <<>' gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>' gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>' gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>' gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }>

tigre comparado con león
>

>

Producción

List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>

El ejemplo anterior solo demuestra el uso general de std::list y sus funciones miembro. La siguiente tabla proporciona todas las funciones miembro de la clase std::list y enlaces a su explicación detallada.

std::list Funciones de miembros

Funciones

Definición

frente() Devuelve el valor del primer elemento de la lista.
atrás() Devuelve el valor del último elemento de la lista.
push_front(g) Agrega un nuevo elemento 'g' al principio de la lista.
empujar_back(g) Agrega un nuevo elemento 'g' al final de la lista.
pop_front() Elimina el primer elemento de la lista y reduce el tamaño de la lista en 1.
pop_back() Elimina el último elemento de la lista y reduce el tamaño de la lista en 1.
lista::comenzar() La función comenzar () devuelve un iterador que apunta al primer elemento de la lista.
lista::fin() La función end() devuelve un iterador que apunta al último elemento teórico que sigue al último elemento.
listarbegin() y render() rbegin() devuelve un iterador inverso que apunta al último elemento de la lista. rend() devuelve un iterador inverso que apunta a la posición antes del comienzo de la lista.
lista cbegin() y cend() cbegin() devuelve un iterador de acceso aleatorio constante que apunta al principio de la lista. cend() devuelve un iterador de acceso aleatorio constante que apunta al final de la lista.
lista crbegin() y crend() crbegin() devuelve un iterador inverso constante que apunta al último elemento de la lista, es decir, al comienzo invertido del contenedor. crend() devuelve un iterador inverso constante que apunta al elemento teórico que precede al primer elemento de la lista, es decir, el extremo inverso de la lista.
vacío() Devuelve si la lista está vacía(1) o no(0).
insertar() Inserta nuevos elementos en la lista antes del elemento en una posición especificada.
borrar() Elimina un solo elemento o un rango de elementos de la lista.
asignar() Asigna nuevos elementos a la lista reemplazando los elementos actuales y cambiando el tamaño de la lista.
eliminar() Elimina todos los elementos de la lista que son iguales a un elemento determinado.
lista::remove_if() Se utiliza para eliminar todos los valores de la lista que corresponden verdaderos al predicado o condición dada como parámetro de la función.
contrarrestar() Invierte la lista.
tamaño() Devuelve el número de elementos de la lista.
cambiar el tamaño de la lista() Se utiliza para cambiar el tamaño de un contenedor de lista.
clasificar() Ordena la lista en orden creciente.
lista max_size() Devuelve el número máximo de elementos que puede contener un contenedor de lista.
lista única() Elimina todos los elementos consecutivos duplicados de la lista.
lista::emplace_front() y lista::emplace_back() La función .emplace_front() se utiliza para insertar un nuevo elemento en el contenedor de la lista y construye el objeto in situ al principio de la lista.
. La función emplace_back() se utiliza para insertar un nuevo elemento en el contenedor de la lista y construye el objeto in situ al final de la lista.
lista::borrar() La función clear() se utiliza para eliminar todos los elementos del contenedor de la lista, haciéndolo así de tamaño 0.
lista::operador= Este operador se utiliza para asignar nuevos contenidos al contenedor reemplazando los contenidos existentes.
lista::intercambiar() Esta función se utiliza para intercambiar el contenido de una lista con otra lista.
empalme de lista() Se utiliza para transferir elementos de una lista a otra.
combinación de listas() Combina dos listas ordenadas en una.
lista de emplazamiento() Extiende la lista insertando un nuevo elemento en una posición determinada y construye el objeto en el lugar al comienzo de la lista, lo que potencialmente mejora el rendimiento al evitar una operación de copia.

Puntos para recordar sobre el contenedor de listas

  • Generalmente se implementa utilizando una lista dinámica doblemente enlazada con recorrido en ambas direcciones.
  • Operación de inserción y eliminación más rápida en comparación con matrices y vectores.
  • Proporciona sólo acceso secuencial. El acceso aleatorio a cualquier elemento intermedio no es posible.
  • Se define como una plantilla por lo que puede contener cualquier tipo de datos.
  • Funciona como lo haría una lista sin ordenar, lo que implica que, de forma predeterminada, el orden de la lista no se conserva. Sin embargo, existen técnicas para clasificar.