vectors stl
Papel de los vectores en STL con ejemplos.
Hasta ahora, en esta serie de C ++, hemos visto matrices estáticas que tienen un tamaño fijo.
Si en medio del programa tenemos que almacenar más elementos en la matriz, entonces se vuelve imposible y estamos seguros de que obtendremos la excepción 'out_of_bound', en el momento en que intentemos almacenar elementos más allá de los límites de la matriz.
Una solución para esto es tener el arreglo declarado con la máxima capacidad para que no encontremos ningún problema en almacenar más elementos en tiempo de ejecución. Pero esta disposición tiene una seria desventaja, es decir, estamos desperdiciando demasiada memoria.
=> Consulte la serie completa de capacitación en C ++ aquí.
La respuesta a todos estos problemas es utilizar una matriz dinámica que se expandirá por sí sola a medida que surja la necesidad. STL proporciona esta matriz dinámica en forma de contenedor de vectores.
Lo que vas a aprender:
- ¿Cómo definimos los vectores?
- Declarar un vector en C ++ con std :: Clase Vector
- Inicializar vector
- Iterador de vectores
- Funciones vectoriales
- Capacidad vectorial
- Modificadores vectoriales
- Vector 2D
- Ejemplo de vector
- Conclusión
- Lectura recomendada
¿Cómo definimos los vectores?
Los vectores son contenedores de matriz dinámica que cambian de tamaño automáticamente cuando se insertan o eliminan elementos. El almacenamiento del vector es manejado por el propio contenedor de vectores.
Los elementos del vector se almacenan en ubicaciones contiguas. Al igual que las matrices, los elementos vectoriales también se pueden atravesar y acceder mediante iteradores.
Declarar un vector en C ++ con std :: Clase Vector
En la clase de vector STL ' std :: vector 'Se define debajo del encabezado. Por lo tanto, para usar un contenedor de vectores, debemos incluir este encabezado en nuestro programa como se muestra a continuación:
|_+_|Podemos declarar un vector vacío como se muestra a continuación:
|_+_|La línea de código anterior creará un vector con los elementos de tipo integer. En memoria, esto se presentará como myvec.
Inicializar vector
Podemos inicializar un vector con valor al momento de declararlo.
preguntas de la entrevista de prueba manual para 3 años de experiencia
Esto se hace de la siguiente manera:
|_+_|En el código anterior, declaramos un vector de tipo int llamado myvec que contiene los primeros cinco elementos de la secuencia de Fibonacci.
El diseño de memoria de este vector será el siguiente:
Iterador de vectores
Como ya se mencionó, usamos iteradores para atravesar el vector secuencialmente.
Los vectores admiten las siguientes funciones de iterador para recorrer los elementos:
- comenzar() - Devuelve el iterador apuntado al primer elemento del contenedor de vectores.
- fin() - Devuelve un iterador que apunta al elemento que sigue al último elemento del vector.
- rbegin () - Devuelve un iterador inverso que apunta al último elemento del contenedor de vectores.
- render () - Devuelve un iterador inverso que apunta al primer elemento del contenedor de vectores.
- cbegin () - Devuelve un iterador constante que apunta al primer elemento del contenedor de vectores.
- unos pocos() - Devuelve un iterador constante que apunta al elemento que sigue al último elemento del contenedor de vectores.
- crbegin () - Devuelve un iterador constante inverso que apunta al último elemento del contenedor de vectores.
- crend () - Devuelve un iterador de constante inversa que apunta al primer elemento del contenedor de vectores.
Veamos un ejemplo que demostraría estas funciones de iterador.Las otras funciones se pueden utilizar de forma similar.
|_+_|Producción:
Salida de Vector con inicio y fin: 2 3 4 5 6
Salida de Vector con rbegin y rend: 6 5 4 3 2
Vector de salida de con cbegin y cend: 2 3 4 5 6
Vector de salida de con crbegin y crend: 6 5 4 3 2
Por lo tanto, en este código, declaramos un vector e insertamos valores en él usando la función push_back. Luego mostramos los vectores usando cada una de las funciones de iterador que describimos anteriormente. Como puede ver en la salida, dependiendo de las funciones de iterador utilizadas, el orden en el que se muestra el vector cambia.
Funciones vectoriales
Ordenar un vector
Podemos usar algoritmos STL que ya hemos visto en el vector.
A continuación se muestra el ejemplo del uso de 'Ordenar' en el vector.
|_+_|Producción:
Vector original
10 50 30 20 60 40
Vector ordenado
10 20 30 40 50 60
En el ejemplo anterior, inicializamos un vector y luego aplicamos un algoritmo de ordenación para ordenar el vector.
Elementos de impresión de un vector
Los vectores se pueden imprimir usando un iterador y una secuencia 'cout'. Podemos usar un iterador para recorrer cada uno de los elementos del vector e imprimirlos con cout.
El siguiente ejemplo muestra esto:
|_+_|Producción:
Salida de Vector con inicio y fin: 3 4 5 6 7
Capacidad vectorial
Existen varias funciones que actúan sobre los vectores para determinar su tamaño, tamaño máximo, etc.
Enumeramos las funciones de la siguiente manera:
(i) Tamaño del vector
La función size () devuelve el número de elementos en el contenedor de vectores. Esta es la función incorporada de la clase std :: vector y se puede usar directamente para encontrar el tamaño del vector.
preguntas y respuestas de la entrevista de prueba manual por 3 años de experiencia
Veamos un ejemplo de un vector usando la función size ():
|_+_|Producción:
Tamaño del vector: 6
En el programa anterior, hemos definido un vector myvec que consta de seis elementos. A continuación, llamamos a la función size () en myvec y muestra el tamaño correcto.
(ii) Cambiar el tamaño de un vector
También podemos cambiar el tamaño de un vector al tamaño deseado para que pueda contener 'n' elementos. Esto se logra mediante la función 'resize ()' de la clase std :: vector. La función de cambio de tamaño toma el tamaño del vector como parámetro y luego cambia el tamaño del contenedor de vector al tamaño especificado.
Entendamos esto con la ayuda de un ejemplo.
|_+_|Producción:
Los elementos vectoriales son: 1 1 2 3 5 8
Tamaño del vector después de cambiar el tamaño: 4
Los elementos vectoriales después de cambiar el tamaño son: 1 1 2 3
En el programa anterior, definimos inicialmente un vector myvec de tamaño 6. Luego llamamos a la función de cambio de tamaño en este vector con tamaño = 4. Esto significa que queremos cambiar el tamaño de nuestro vector al tamaño 4 ahora.
Después de llamar a la función de cambio de tamaño, imprimimos el vector nuevamente. Vemos que cuando cambiamos el tamaño del vector al tamaño 4, los elementos restantes se descartan y solo se muestran los 4 elementos del vector.
Además de las funciones de tamaño y cambio de tamaño, la clase de vector también admite algunas funciones más que nos permiten manipular la capacidad del vector. Son:
- tamaño máximo(): Devuelve el tamaño máximo, es decir, el número máximo de elementos que puede contener el vector.
- capacidad(): Devuelve el tamaño del espacio de almacenamiento asignado actualmente. Esto se devuelve en términos de la cantidad de elementos.
- vacío(): Comprueba si el contenedor está vacío.
- shrink_to_fit (): Reduce la capacidad del vector para ajustarse al tamaño y descarta todos los demás elementos.
- reserva(): Reserva la capacidad del vector para contener n elementos.
Modificadores vectoriales
Los modificadores son operaciones o funciones que pueden usarse para modificar el contenido del contenedor de vectores. Veremos algunas de las principales funciones que se utilizan como modificadores.
Asignar nuevos valores a Vector
Una de las funciones modificadoras proporcionadas por std :: vector es la función de asignación. La función de asignación asigna nuevos valores al vector reemplazando los antiguos.
Esto se demuestra en el siguiente ejemplo.
|_+_|Producción:
Los elementos vectoriales: 10 10 10 10 10
En el código anterior, declaramos un vector de tipo int. Luego llamamos para asignar una función con los parámetros 5, 10. Esto significa que pretendemos asignar el elemento 10 al vector 5 veces. Cuando mostramos el vector, vemos que el vector tiene 5 elementos, todos con valor 5.
Borrar un vector
La siguiente función proporcionada por std :: vector para modificar un vector es la función 'borrar'. La función de borrado elimina los elementos del rango especificado o una posición del vector.
Veamos un ejemplo de la función Borrar.
|_+_|Producción:
Elementos vectoriales: 1 1 2 3 5
Tamaño del vector después de borrar: 4
Vector después de la operación de borrado: 1 2 3 5
Como se muestra en la salida anterior para la función de cambio de tamaño, especificamos el rango o la posición del elemento que se borrará o eliminará. En el ejemplo anterior, hemos especificado la posición que apunta al primer elemento del vector.
Insertar elementos en el vector
La clase de vector std :: vector proporciona otra función para insertar valores en el vector. La función Insertar nos permite insertar elementos en el vector antes de la posición especificada.
Esto quedará claro con el siguiente ejemplo.
|_+_|Producción:
Vector inicial: 2 3 4
Nuevo vector después de insertar: 20 30 2 3 4
El programa anterior declara un vector con 3 elementos inicialmente. Luego llamamos a la función de inserción dos veces para insertar los valores 20 y 30 en la primera y segunda posiciones del vector, respectivamente. Luego mostramos el vector cambiado.
Intercambio de contenidos vectoriales
La clase de vector también nos brinda la capacidad de intercambiar o intercambiar contenidos de un vector con el de otro vector del mismo tipo y tamaño. Esto se logra mediante la función integrada de vector 'swap'.
Considere el siguiente fragmento de código.
|_+_|Producción:
Vector 1: 1 3
Vector 2: 5 7
Después de Swap
Vector 1: 5 7
Vector 2: 1 3
El código anterior muestra el contenido de dos vectores antes y después del intercambio.
Borrar valores en el vector
A diferencia de eliminar uno o más elementos del vector mediante el uso de la función de borrado, tenemos otra función 'Borrar' que nos permite eliminar todos los elementos en el contenedor de vectores.
En el programa siguiente, demostramos una función clara del contenedor de vectores.
|_+_|Producción:
Tamaño del vector v1: 4
Vector 1: 1 3 5 7
Tamaño del vector v1 después de la llamada a clearfunction: 0
Aquí primero declaramos un vector y luego insertamos elementos en él. Una vez que llamamos a la función clear (), vemos que todos los elementos del vector se eliminan a la vez.
en (pos)
Esta función devuelve la referencia al elemento en la posición 'pos' dentro del vector.
Esta es una de las funciones que se utiliza para acceder al elemento vectorial.
A continuación se ofrece un ejemplo:
|_+_|Producción:
Elemento en la posición 3: 3
programa de árbol de búsqueda binaria en java
Como se muestra en el ejemplo, la función 'at' se usa para acceder al elemento en el vector en la posición especificada.
Parte delantera
La función 'front' devuelve la referencia al primer elemento del vector. Esta es otra función que usamos para acceder a los elementos del contenedor de vectores.
El siguiente ejemplo muestra el uso de la función 'frontal'.
|_+_|Producción:
Vector de entrada: 1 1 2 3 5 8
Elemento al frente del vector: 1
atrás
De manera similar a la función 'frontal', la función posterior se utiliza para acceder al último elemento del contenedor de vectores. La función 'atrás' devuelve una referencia al último elemento en el contenedor de vectores.
El siguiente ejemplo muestra el uso de la función 'atrás'.
|_+_|Producción:
Vector de entrada: 1 1 2 3 5 8
Elemento en la parte posterior del vector: 8
Encuentra un elemento en el vector
La función 'buscar' se utiliza para encontrar si un elemento en particular (denominado clave) está presente en el vector o no. Se supone que esta función es rápida y eficiente. Una vez que se encuentra el valor, la función regresa.
El siguiente ejemplo muestra el uso de la función de búsqueda.
|_+_|Producción:
Vector de entrada: 1 1 2 3 5 8
Introduzca la clave a buscar: 0
Elemento no encontrado
Vector 2D
El vector bidimensional también se conoce como 'Vector de vector'. Al igual que las matrices bidimensionales, los elementos de vectores bidimensionales también se organizan en forma de matriz.
A continuación se proporciona un programa de ejemplo para el vector 2D.
|_+_|Producción:
Vector 2D:
1 3 5
7 9 11
13 15 17
En el ejemplo anterior, observe la forma en que se define el vector 2D. Se define como un vector dentro de otro vector. Al mostrar este vector 2D, usamos el mismo enfoque que el de mostrar matrices 2D.
Ejemplo de vector
A continuación se muestra un ejemplo de vector que contiene la mayoría de las operaciones vectoriales.
|_+_|Producción:
Los elementos vectoriales: 10 10 10 10 10
El nuevo vector después de push_back: 10 10 10 10 10 5
Nuevo vector después de pop_back: 10 10 10 10 10
Nuevo vector después de insertar: 20 10 10 10 10 10
Tamaño del vector después de borrar: 5
Después de borrar el primer elemento: 10 10 10 10 10
A continuación se muestra la captura de pantalla del mismo.
En el ejemplo anterior, declaramos un vector y luego, usando las funciones de asignación y push_back, ingresamos elementos en el vector. Luego usamos la función pop_back para eliminar un elemento del final del vector. Después de eso, nuevamente agregamos un elemento al vector usando el elemento de inserción y luego borramos el elemento usando la función de borrado.
Este es un ejemplo de un extremo a otro del contenedor de vectores que demuestra sus diversas funciones.
Conclusión
Con esto, hemos llegado al final de este tutorial sobre vector.
En nuestro próximo tutorial, aprenderemos sobre el contenedor 'lista' de STL que es similar a las líneas de matrices y vectores.
=> Consulte la guía de formación perfecta de C ++ aquí.