Vector en C++ Biblioteca de plantillas estándar (STL) con ejemplo

⚡ Resumen inteligente

Vector en C++ Es una matriz dinámica de la biblioteca de plantillas estándar que cambia de tamaño automáticamente a medida que se agregan o eliminan elementos, almacenando los elementos en memoria contigua para que los programadores puedan acceder a ellos y recorrerlos utilizando iteradores.

  • 📦 Matriz dinámica: A C++ Un vector crece o se encoge automáticamente, a diferencia de una matriz estática de tamaño fijo.
  • 🧩 Encabezado y sintaxis: Incluya el encabezado del vector y luego declare el vector. nombre para almacenar elementos tipados.
  • 🧭 Iteradores: Las funciones begin(), end(), cbegin() y cend() se mueven a través de los elementos del vector como si fueran punteros.
  • 🛠️ Modificadores: Las funciones push_back(), insert(), pop_back(), erase() y clear() modifican el contenido de los vectores.
  • 📐 Capacidad de Carga: Las funciones size(), capacity(), max_size(), resize() y empty() informan o ajustan el almacenamiento.
  • 🤖 Asistencia de IA: GitHub Copilot y asistentes de IA similares generan operaciones vectoriales a partir de un comentario breve.

C++ Vector STL

¿Qué es C++ ¿Vector?

A C++ Un vector es una matriz dinámica capaz de redimensionarse automáticamente. El redimensionamiento ocurre después de que se haya agregado o eliminado un elemento del vector. El almacenamiento lo maneja automáticamente el contenedor. Los elementos de un vector se almacenan en un almacenamiento contiguo. Esto permite C++ Los programadores pueden acceder y recorrer los elementos del vector utilizando iteradores.

La inserción de nuevos datos en un vector se realiza al final del mismo. Esto requiere un tiempo diferencial. La eliminación de un elemento de un vector requiere un tiempo constante, ya que no es necesario redimensionarlo. La inserción o eliminación de un elemento al principio del vector requiere un tiempo lineal.

Antes de escribir código con vectores, conviene saber cuándo son el contenedor adecuado al que recurrir.

¿Cuándo utilizar un vector?

A C++ El vector debe utilizarse en las siguientes circunstancias:

  • Cuando se trata de elementos de datos que cambian constantemente.
  • Si no se conoce el tamaño de los datos antes de comenzar, el vector no requerirá que establezca el tamaño máximo del contenedor.

Cómo inicializar vectores en C++

La sintaxis de los vectores en C++ :

vector <data-type> name (items)

Como se muestra arriba, comenzamos con la palabra clave vector.

  • El tipo de datos es el tipo de datos de los elementos que se almacenarán en el vector.
  • El nombre es el nombre del vector o de los elementos de datos.
  • El artículos Indica el número de elementos del vector de datos. Este parámetro es opcional.

Una vez que existe un vector, los iteradores proporcionan una forma similar a la de un puntero para moverse a través de sus elementos.

Iteradores

El propósito de los iteradores es ayudarnos a acceder a los elementos que se almacenan en un vector. Es un objeto que funciona como un puntero. Aquí están los iteradores comunes compatibles con C++ vectores:

  • vector::begin(): da un iterador que apunta al primer elemento del vector.
  • vector::end(): proporciona un iterador que apunta al elemento más allá del final del vector.
  • vector::cbegin(): Es lo mismo que vector::begin(), pero no tiene la capacidad de modificar elementos.
  • vector::cend(): Es lo mismo que vector::end() pero no puede modificar los elementos del vector.

El siguiente ejemplo rellena un vector y luego lo recorre utilizando iteradores tanto mutables como constantes.

Ejemplo

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

Salida:

C++ Iteradores de vectores Ejemplo 1 salida

Aquí hay una captura de pantalla del código:

C++ Iteradores de vectores Ejemplo 1 de código

Code Explicación:

  1. Incluya el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluya el archivo de encabezado vectorial en nuestro código. Nos permitirá trabajar con vectores en C++.
  3. Incluya el espacio de nombres estándar para utilizar sus clases y funciones sin llamarlo.
  4. Llame a la función main() dentro de la cual se debe agregar la lógica del programa.
  5. El { marca el inicio del cuerpo de la función main().
  6. Declare un vector llamado nums para almacenar un conjunto de números enteros.
  7. Crea un bucle for para iterar sobre el vector. La variable nos ayudará a recorrer los elementos del vector, desde el primero hasta el quinto.
  8. Empuje elementos en el número de vector desde la parte posterior. Para cada iteración, esto agregará el valor actual de la variable a al vector, que es de 1 a 5.
  9. Imprime algo de texto en la consola.
  10. Utilice una variable iteradora a para iterar sobre los elementos de los números vectoriales desde el principio hasta el elemento más allá del final. Tenga en cuenta que estamos utilizando los iteradores vector::begin() y vector::end().
  11. Imprima los valores señalados por la variable iteradora a en la consola para cada iteración.
  12. Imprime algo de texto en la consola. El \n es un carácter de nueva línea, que mueve el cursor a la nueva línea para imprimir desde allí.
  13. Utilice una variable iteradora para recorrer los elementos del vector `nums` desde el principio hasta el último elemento. Tenga en cuenta que estamos utilizando los iteradores `vector::cbegin()` y `vector::cend()`.
  14. Imprima los valores señalados por la variable iteradora a en la consola para cada iteración.
  15. La función principal debería devolver un valor si el programa se ejecuta correctamente.
  16. Fin del cuerpo de la función main().

Modificadores

Los modificadores se utilizan para cambiar el significado del tipo de datos especificado. Aquí están los modificadores comunes en C++:

  • vector::push_back(): Este modificador empuja los elementos desde atrás.
  • vector::insertar(): Para insertar nuevos elementos en un vector en una ubicación específica.
  • vector::pop_back(): Este modificador elimina los elementos vectoriales de la parte posterior.
  • vector::borrar(): Se utiliza para eliminar una variedad de elementos de la ubicación especificada.
  • vector::claro(): Elimina todos los elementos del vector.

El siguiente ejemplo aplica estos modificadores en secuencia para ver cómo cambia un vector.

Ejemplo

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

Salida:

C++ Modificadores de vector Ejemplo 2 de salida

Aquí hay una captura de pantalla del código:

C++ Modificadores de vector Ejemplo 2 de código

Code Explicación:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado vectorial en nuestro código para usar sus funciones.
  3. Incluya el espacio de nombres estándar para usar sus clases sin llamarlo.
  4. Llame a la función principal(). La lógica del programa debe agregarse dentro de su cuerpo.
  5. El inicio del cuerpo de la función main().
  6. Declare un vector llamado nums para almacenar algunos valores enteros.
  7. Almacene 5 elementos en los números vectoriales. Cada uno con un valor de 1.
  8. Imprime algo de texto en la consola.
  9. Utilice una variable iteradora a para iterar sobre los elementos de los números vectoriales.
  10. Imprima los valores de los números vectoriales en la consola para cada iteración.
  11. Agregue el valor 2 al final de los números del vector.
  12. Declare una variable entera n para almacenar el tamaño de los números vectoriales.
  13. Imprima el último valor de los números vectoriales junto con otro texto. Debería devolver un 2.
  14. Elimina el último elemento de los números vectoriales. Los 2 serán eliminados.
  15. Imprime texto en la consola. El \n mueve el cursor a la nueva línea para imprimir el texto allí.
  16. Utilice una variable iteradora a para iterar sobre los elementos de los números vectoriales.
  17. Imprima los valores de los números vectoriales en la consola para cada iteración.
  18. Inserte el valor 7 al comienzo de los números del vector.
  19. Imprima el primer valor de los números vectoriales junto con otro texto. Debería devolver 7.
  20. Elimina todos los elementos de los números vectoriales.
  21. Imprima el tamaño del número de vector junto con otro texto después de borrar todo el contenido. Debería devolver 0.
  22. Fin del cuerpo de la función main().

CAPACIDAD

Use la siguiente funciones para determinar la capacidad de un vector:

  • Tamaño() – Devuelve el número de elementos en un vector.
  • Tamaño máximo() – Devuelve el número máximo de elementos que un vector puede almacenar.
  • Capacidad() – Devuelve la cantidad de espacio de almacenamiento asignado a un vector.
  • Redimensionar() – Redimensiona el contenedor para que contenga n elementos. Si el tamaño actual del vector es mayor que n, los elementos del final se eliminarán del vector. Si el tamaño actual del vector es menor que n, se añadirán elementos adicionales al final del vector.
  • Vacío() – Devuelve verdadero si un vector está vacío. De lo contrario, devuelve falso.

Este último ejemplo informa y ajusta el almacenamiento de un vector utilizando las funciones de capacidad descritas anteriormente.

Ejemplo

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

Salida:

C++ Capacidad vectorial Ejemplo 3 de salida

Aquí hay una captura de pantalla del código:

C++ Capacidad vectorial Ejemplo 3 código

Code Explicación:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar su función.
  2. Incluya el archivo de encabezado vectorial en nuestro código para usar sus funciones.
  3. Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
  4. Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
  5. Cree un vector llamado vector1 para almacenar números enteros.
  6. Utilice un bucle for para crear la variable x con valores del 1 al 10.
  7. Inserte los valores de la variable x en el vector.
  8. Imprime el tamaño del vector junto con otro texto en la consola.
  9. Imprime la capacidad del vector junto con otro texto en la consola.
  10. Imprima la cantidad máxima de elementos que el vector puede contener junto con otro texto en la consola.
  11. Cambie el tamaño del vector para que contenga solo 5 elementos.
  12. Imprime el nuevo tamaño del vector junto con otro texto.
  13. Compruebe si el vector no está vacío.
  14. Imprime texto en la consola si el vector no está vacío.
  15. Utilice una declaración else para indicar qué hacer si el vector está vacío.
  16. Texto para imprimir en la consola si el vector está vacío.
  17. El programa debe devolver valor una vez completado con éxito.
  18. Fin del cuerpo de la función main().

Preguntas Frecuentes

Un vector es un arreglo dinámico que cambia de tamaño automáticamente y conoce su propio tamaño, mientras que un arreglo integrado tiene una longitud fija establecida en tiempo de compilación. Los vectores gestionan la memoria automáticamente; los arreglos tradicionales no.

Utilice el operador de subíndice, como nums[0], para un acceso directo y rápido. La función miembro at(), como nums.at(0), hace lo mismo, pero lanza una excepción out_of_range cuando el índice no es válido, lo que la hace más segura.

Declara un vector cuyos elementos sean a su vez vectores, por ejemplo vector > cuadrícula. Puedes dimensionarla con constructores o push_back filas. Cada vector interno puede crecer de forma independiente, lo que te proporciona una matriz flexible y redimensionable.

Un vector almacena elementos en memoria contigua con acceso aleatorio rápido, mientras que una lista doblemente enlazada (std::list) permite la inserción y eliminación rápidas en cualquier parte, pero no dispone de indexación directa. Elija según su patrón de acceso.

Incluya el encabezado del algoritmo y llame a std::sort con los iteradores begin y end, como en sort(nums.begin(), nums.end()). La ordenación es ascendente por defecto; pase un comparador personalizado o mayor () para ordenar en orden descendente.

Sí. Un vector es una plantilla y puede contener cualquier tipo, incluyendo cadenas, clases personalizadas e incluso otros vectores. Declara el tipo de elemento dentro de los corchetes angulares, como por ejemplo vector. o vector .

Sí. Los asistentes de codificación de IA convierten una breve indicación o comentario en código vectorial funcional, incluyendo declaraciones, bucles push_back e iteraciones. Siempre revise los tipos, límites y manejo de capacidad sugeridos, ya que la IA puede pasar por alto requisitos específicos del proyecto.

Sí. Copiloto de GitHub Sugiere declaraciones de vectores, llamadas a push_back e insert, y bucles iteradores a medida que escribes. Maneja bien el código repetitivo, aunque conviene verificar los índices, el redimensionamiento y la lógica antes de compilar.

Resumir este post con: