¿Qué es una std :: list?
IC ++, la lista std :: se refiere a un contenedor de almacenamiento. La lista estándar: le permite insertar y eliminar elementos desde cualquier lugar. La lista std :: se implementa como una lista de doble enlace. Esto significa que se puede acceder a los datos de la lista de forma bilateral y secuencial.
La lista de la biblioteca de plantillas estándar no admite el acceso rápido aleatorio, pero sí admite el acceso secuencial desde todas las direcciones.
Puede dispersar los elementos de la lista en diferentes piezas de memoria. La información necesaria para el acceso secuencial a los datos se almacena en un contenedor. La std :: list puede expandirse y contraerse de ambos según sea necesario durante el tiempo de ejecución. Un dispensador interno cumple automáticamente con los requisitos de almacenamiento.
En este tutorial de C ++, aprenderá:
¿Por qué usar std :: list?
Aquí hay algunas razones para usar std :: List:
- El std :: list se compara mejor con otros contenedores de secuencia como matriz y vector.
- Tienen un mejor rendimiento para insertar, mover y quitar elementos desde cualquier lugar.
- Std :: list también funciona mejor con algoritmos que realizan tales operaciones de manera rigurosa.
Lista de sintaxis
Para definir std :: list, necesitamos el archivo de encabezado importar. Aquí está la lista de definiciones de definición estándar :::
template < class Type, class Alloc =allocator<T> > class list;
Se describen los parámetros anteriores:
- T – Se define el tipo de elemento.
Puede reemplazar T con cualquier tipo de datos, incluso tipos definidos por el usuario.
- Alloc: define el tipo de objeto asignado.
Esto usa la plantilla de clase asignada por defecto. Se basa en el valor y utiliza un modelo de asignación de memoria simple.
Ejemplos 1:
#include <algorithm> #include <iostream> #include <list> int main() { std::list<int> my_list = { 12, 5, 10, 9 }; for (int x : my_list) { std::cout << x << 'n'; } }
Producción:
Aquí hay una imagen del código:
Explicación del Código:
- Incluya el archivo de encabezado del algoritmo para usar sus funciones.
- Incluya el archivo de encabezado de iostream para usar sus funciones.
- Incluya el archivo de encabezado de lista para usar sus funciones.
- Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una lista llamada my_list con un conjunto de 4 enteros.
- Utilice un bucle de bucle para crear una variable de bucle xa. Esta variable se utilizará para repetir los elementos de la lista.
- Imprima los valores de la lista en la consola.
- El final del cuerpo de tu bucle.
- El final del cuerpo de la función principal ().
Funciones de lista de C ++
Aquí están las funciones comunes std :: list:
Función | Suelte |
insertar () | Esta función inserta un nuevo elemento antes de que el puntero represente la iteración. |
hacer retroceder () | Estas funciones agregan un nuevo elemento al final de la lista. |
push_front () | Agrega un nuevo elemento al principio de la lista. |
pop_front () | Elimina el primer elemento de la lista. |
Talla () | Esta función determina el número de elementos de la lista. |
parte delantera () | Determinar los primeros elementos de la lista. |
Atrás () | Para determinar el último elemento de la lista. |
contrarrestar () | Invierte los elementos de la lista. |
fusión () | Combina dos listas ordenadas. |
Constructores
Aquí hay una lista de funciones proporcionadas por el archivo de encabezado :
- Generador predeterminado std :: list :: list (): crea una lista vacía, es decir, con cero elementos.
- Generador de números std :: list :: list (): crea una lista con n elementos y asigna un valor de cero (0) a cada elemento.
- Range constructor std :: list :: list (): crea una lista con muchos elementos en el rango del primero al último.
- Copiar std builder :: list :: list (): crea una lista con una copia de todos los elementos de la lista existente.
- Move std builder :: list :: list () – se crea una lista con los elementos de otra lista usando semántica de movimiento.
- Start list builder std :: list :: list () – Crea una lista con otros elementos de la lista usando semántica de movimiento.
Ejemplo 2:
#include <iostream> #include <list> using namespace std; int main(void) { list<int> l; list<int> l1 = { 10, 20, 30 }; list<int> l2(l1.begin(), l1.end()); list<int> l3(move(l1)); cout << "Size of list l: " << l.size() << endl; cout << "List l2 contents: " << endl; for (auto it = l2.begin(); it != l2.end(); ++it) cout << *it << endl; cout << "List l3 contents: " << endl; for (auto it = l3.begin(); it != l3.end(); ++it) cout << *it << endl; return 0; }
Producción:
Aquí hay una imagen del código:
Explicación del Código:
- Incluya el archivo de encabezado de iostream para usar sus funciones.
- Incluya el archivo de encabezado de lista para usar sus funciones.
- Ingrese el nombre del espacio estándar en el código para usar sus clases sin llamarlo.
- Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una lista vacía llamada l.
- Cree una lista denominada l1 con un conjunto de 3 enteros.
- Cree una lista denominada l2 con todos los elementos de la lista denominada l1, de principio a fin.
- Cree una lista denominada l3 utilizando semántica de movimiento. La lista l3 tendrá el mismo contenido que la lista l2.
- Imprima el tamaño de la lista denominada l en la consola junto a otro texto.
- Imprime texto en la consola.
- Cree un comedor llamado named y utilícelo para repetir los elementos de la lista llamada l2.
- Imprima los elementos de la lista con nombre l2 en la consola.
- Imprime texto en la consola.
- Cree un comedor llamado named y utilícelo para repetir los elementos de la lista llamada l3.
- Imprima los elementos de la lista con nombre l3 en la consola.
- El programa debe devolver valor al completarse con éxito.
- El final del cuerpo de la función principal ().
Propiedades de los contenedores
Aquí está la lista de propiedades del contenedor:
Propiedad | Suelte |
Secuencia | Los contenedores ordenan la secuencia de sus elementos en una secuencia lineal rígida. Los elementos se encuentran según su posición en la secuencia. |
Lista doble enlazada | Cada función contiene información sobre cómo encontrar elementos anteriores y siguientes. Esto permite un tiempo continuo para insertar y eliminar operaciones. |
Consciente de la asignación | Un objeto distribuidor se utiliza para modificar dinámicamente el tamaño del almacenamiento. |
Insertar en lista
Hay varias funciones que podemos usar para agregar valores a una lista. Demostraremos esto:
Ejemplo 3:
#include <algorithm> #include <iostream> #include <list> int main() { std::list<int> my_list = { 12, 5, 10, 9 }; my_list.push_front(11); my_list.push_back(18); auto it = std::find(my_list.begin(), my_list.end(), 10); if (it != my_list.end()) { my_list.insert(it, 21); } for (int x : my_list) { std::cout << x << 'n'; } }
Producción:
Aquí hay una imagen del código:
Explicación del Código:
- Incluya el archivo de encabezado del algoritmo para usar sus funciones.
- Incluya el archivo de encabezado de iostream para usar sus funciones.
- Incluya el archivo de encabezado de lista para usar sus funciones.
- Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una lista llamada my_list con un conjunto de 4 enteros.
- Ingrese el elemento 11 antes de la lista llamada my_list.
- Ingrese la función 18 al final de la lista llamada my_list.
- Cree un eater y utilícelo para obtener el elemento 10 de la lista my_list.
- Utilice una declaración para averiguar si el elemento anterior se encontró o no.
- Inserte el elemento 21 antes del elemento anterior si lo encuentra.
- Fin del cuerpo de la declaración si.
- Utilice un bucle de bucle para crear una variable de bucle xa. Esta variable se utilizará para repetir los elementos de la lista.
- Imprima los valores de la lista en la consola.
- El final del cuerpo de tu bucle.
- El final del cuerpo de la función principal ().
Eliminado de la lista
Los elementos se pueden eliminar de una lista. La función eliminar () le permite eliminar un elemento o rango de elementos de una lista.
- Para eliminar un elemento, solo necesita pasar un número entero. El elemento se eliminará.
- Para eliminar un rango, se pasan las variables iniciales y los repetidores finales. Ilustraremos esto.
Ejemplo 4:
#include <algorithm> #include <iostream> #include <list> using namespace std; int main() { std::list<int> my_list = { 12, 5, 10, 9 }; cout << "List elements before deletion: "; for (int x : my_list) { std::cout << x << 'n'; } list<int>::iterator i = my_list.begin(); my_list.erase(i); cout << "nList elements after deletion: "; for (int x : my_list) { std::cout << x << 'n'; } return 0; }
Producción:
Aquí hay una imagen del código:
Explicación del Código:
- Incluya el archivo de encabezado del algoritmo para usar sus funciones.
- Incluya el archivo de encabezado de iostream para usar sus funciones.
- Incluya el archivo de encabezado de lista para usar sus funciones.
- Incluya el nombre de espacio estándar en nuestro programa para usar sus clases sin llamarlo.
- Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una lista llamada my_list con un conjunto de 4 enteros.
- Imprime texto en la consola.
- Utilice un bucle de bucle para crear una variable de bucle xa. Esta variable se utilizará para repetir los elementos de la lista.
- Imprima los valores de la lista en la consola.
- El extremo del cuerpo del bucle.
- Cree un iterador que se centre en el primer elemento de la lista.
- Utilice la función de eliminación () señalada por el iterador i.
- Imprime texto en la consola.
- Utilice un bucle de bucle para crear una variable de bucle xa. Esta variable se utilizará para repetir los elementos de la lista.
- Imprima los valores de la lista en la consola. Esto viene después de la eliminación.
- El extremo del cuerpo del bucle.
- El programa debe devolver valor una vez completado con éxito.
- El final del cuerpo de la función principal ().
Resumen:
- La lista estándar :: es un contenedor de almacenamiento.
- Le permite insertar y eliminar elementos desde cualquier lugar en cualquier momento.
- Se aplica como doble enlace
- Se puede acceder a los datos de Std :: list de forma bilateral y secuencial.
- Std :: list no admite el acceso rápido aleatorio. Sin embargo, admite el acceso secuencial desde todas las direcciones.
- Puede dispersar elementos de la lista de std :: en diferentes piezas de memoria.
- Puede reducir o expandir std :: list de ambos según sea necesario durante el tiempo de ejecución.
- Para agregar elementos a una lista std ::, usamos la función insert ().
- Para eliminar elementos de la lista std ::, usamos la función de eliminación ().