lists stl
Conozca todo sobre las listas en STL junto con su implementación.
Las listas son contenedores secuenciales. Las listas contienen elementos en ubicaciones no contiguas. Hemos hablado de matrices y vectores en nuestros tutoriales anteriores.
En el caso de los contenedores de matriz y vector, ya que estos contenedores almacenan datos en la memoria contigua, la operación de inserción en el medio de estos contenedores resulta ser muy costosa ya que tenemos que cambiar los elementos existentes en consecuencia para hacer espacio para el nuevo elemento.
=> Vea aquí para explorar la lista completa de tutoriales de C ++.
¿Qué es el modelo de cascada con ejemplo?
Lo que vas a aprender:
Visión general
La lista es un contenedor que supera este inconveniente de los contenedores de matriz y vector. Nos permite insertar elementos en cualquier lugar de la lista sin causar mucha sobrecarga. Pero las listas son más lentas que los vectores en lo que respecta al recorrido.
En este tutorial, veremos la implementación de listas en STL junto con las diversas operaciones de recorrido, manipulaciones y lista de acceso con ejemplos.
Tenga en cuenta que la mayoría de las operaciones de lista son similares a las de los vectores y, por lo tanto, los lectores que ya hayan leído nuestro tutorial sobre vectores no tendrán problemas para interpretar los conceptos de las listas.
Declaración e inicialización
Para implementar el contenedor de listas y usar todos sus beneficios, necesitamos incluir un archivo de encabezado en nuestro programa.
|_+_|La declaración general para el contenedor de lista es
|_+_|Por ejemplo,podemos declarar una lista llamada 'mylist' de tipo int de la siguiente manera:
|_+_|También podemos inicializar la lista en el momento de la declaración o agregarle elementos usando una de las operaciones que admite.
Veamos cómo podemos inicializar la lista que creamos arriba.
|_+_|La inicialización anterior se colocará en la memoria como se muestra a continuación:
Una vez que inicializamos la lista, podemos acceder a los elementos de una lista usando un iterador. Las funciones de iterador 'comenzar' y 'finalizar' nos ayudan a recorrer los elementos de la lista.
Nota: El iterador de la lista también admite otros iteradores como los iteradores inversos (rbegin, rend), los iteradores constantes (cbegin, cend) y los iteradores inversos constantes (crbegin, crend) y se pueden utilizar de forma similar a los vectores.
El siguiente ejemplo muestra esto.
|_+_|Producción:
Los elementos de la lista son: 1 1 2 3 5
Así, en el ejemplo anterior, hemos declarado una lista de la secuencia de Fibonacci. A continuación, declaramos un iterador del mismo tipo que la lista y luego, usando el bucle for, imprimimos el contenido de la lista de principio a fin.
Ahora saltemos a las operaciones o funciones que nos proporciona el contenedor de listas en STL.
Operaciones de lista
- Insertar: Se usa para insertar un elemento en la posición dada. Devuelve un iterador que apunta al primer elemento insertado.
insertar (pos, num_elem, elem)
Dónde,
pos=> Posición en la que se insertarán nuevos elementos.
num_elem => Número de elementos a insertar; por defecto es 1.
item => Valor real a insertar.
Entendamos la función de inserción tomando un ejemplo.
|_+_|Producción:
La lista después de insertar 1 elemento usando insert () es: 1 1 2 3
Este es un ejemplo para insertar solo un elemento en el 4thposición en la lista que eventualmente es la última posición. Por lo tanto, primero, tenemos una lista para la cual hemos definido el iterador que apunta al comienzo de la lista. Luego cambiamos este iterador al 4thposition y luego llame a insert para insertar 1 elemento.
También podemos insertar más de un elemento, especificando el segundo parámetro en la función de inserción. Siempre que no se especifica, el valor predeterminado es 1.
- hacer retroceder :Agrega un nuevo elemento al final de la lista.
- push_front :Agrega un nuevo elemento al principio de la lista.
Veamos un ejemplo que demuestra el uso de las funciones push_back y push_front.
|_+_|Producción:
Los elementos de la lista son: 1 1 2 3
Mostrar el contenido después de push_front y push_back: 0 1 1 2 3 5
En este ejemplo, primero creamos y enumeramos los dos elementos, uno en el frente y en la parte posterior usando las funciones push_front y push_back respectivamente. La salida muestra la lista modificada después de que se ejecutan ambas funciones.
- pop_back :Elimina el último elemento de la lista reduciendo así el tamaño de la lista en 1.
- pop_front :Elimina el primer elemento de la lista reduciendo así el tamaño de la lista en 1.
El siguiente ejemplo muestra el uso de las operaciones pop_back y pop_front de la lista.
|_+_|Producción:
Los elementos de la lista son: 1 1 2 3 5
Mostrar el contenido después de push_front y push_back: 1 2 3
Como se describe en la definición de las operaciones, cada una de las operaciones pop_front y pop_back elimina el elemento de la parte delantera y trasera de la lista, es decir, el primer y último elemento de la lista respectivamente y, por lo tanto, cada vez que reduce el tamaño de la lista en 1.
- Talla :Devuelve el tamaño de la lista, es decir, el número de elementos de la lista.
- vacío :Comprueba si la lista está vacía.
- borrar :Elimina un elemento o rango de elementos de la lista.
- claro :Elimina todos los elementos de la lista poniéndolo en tamaño 0.
A continuación se muestra un ejemplo para demostrar el uso de todas las funciones anteriores, es decir, tamaño, vacío, borrar y borrar.
|_+_|Producción:
Los elementos de la lista son: 1 1 2 3 5
tamaño de la lista: 5
Lista después de borrar el primer elemento: 1 2 3 5
Nuevo tamaño de la lista: 4
tamaño de la lista después de borrar: 0
El programa anterior demuestra las cuatro funciones relacionadas con la capacidad de la lista. Vemos que el tamaño de la lista disminuye en 1 cuando borramos 1 elemento de la lista. Mientras que cuando llamamos a una operación clara en la lista, el tamaño es 0, lo que significa que se eliminan todos los elementos de la lista.
- parte delantera :Devuelve el valor del primer elemento de la lista.
- espalda :Devuelve el valor del último elemento de la lista.
- intercambiar :Intercambia el contenido de una lista con el contenido de otra lista del mismo tamaño y tipo.
- marcha atrás :Un algoritmo que invierte la lista.
- clasificar :Ordena la lista dada.
El siguiente ejemplo demuestra el uso de las funciones de anverso, reverso, reverso, clasificación e intercambio.
cómo abrir archivos .swf en Windows|_+_|
Producción:
Los elementos de la lista son: 1 1 2 3 5
Al frente de la lista: 1
Reverso de la lista: 5
Lista invertida: 5 3 2 1 1
Contenido de la lista impar: 1 3 5 7 9
Después de cambiar
mylist: 1 3 5 7 9
Oddlist: 5 3 2 1 1
En este código, primero, imprimimos los valores frontal y posterior de la lista mylist. Luego, esta lista se invierte y se imprime la lista invertida. Después de eso, definimos una lista más de números impares que no está en ningún orden y llamamos al algoritmo 'Ordenar' para ordenar esta lista. Luego intercambiamos las dos listas usando la función de intercambio e imprimimos las listas intercambiadas.
- empalme :Esta función se utiliza para transferir el contenido de una lista a otra lista en una posición específica.
Ambas listas deben ser del mismo tipo.
empalme (posición, lista);
dónde,
position => Posición en la que se transferirán los contenidos de la lista.
list => Lista cuyos elementos se van a transferir.
El ejemplo que se muestra a continuación muestra el uso de la función de empalme.
|_+_|Producción:
Los elementos de la lista son: 1 1 8 13
lista para empalmar: 2 3 5
Enumere el contenido después de empalmar en la posición 2: 1 1 2 3 5 8 13
los ejemplo muestra que usamos dos listas. Primero, el iterador para mylist se mueve a dos posiciones y luego se llama a la función de empalme para transferir el contenido de la segunda lista a la tercera posición de la primera lista.
- Vamos :A diferencia de la función de empalme que se puede usar para transferir el contenido de una lista a otra en una posición específica, la operación de combinación fusiona directamente dos listas para formar una sola lista. Para la operación de combinación, ambas listas deben estar ordenadas.
A continuación se muestra un ejemplo para demostrar la función de combinación.
|_+_|Producción:
Primera lista: 11 2 3 5 8
Segunda lista: 4 6 7
Contenido de la lista después de fusionar dos listas:
1 1 2 3 4 5 6 7 8
Por lo tanto, en el programa anterior, tenemos dos listas que están ordenadas. Llamamos operación de fusión a estas dos listas. La lista resultante es una lista ordenada que contiene los elementos de ambas listas.
Conclusión
Hemos llegado al final de este tutorial sobre listas en STL. Esperamos que este tutorial le haya brindado un inmenso conocimiento sobre las listas en STL.
=> Consulte aquí para ver los tutoriales de capacitación de la A a la Z de C ++ aquí.