Acceder a los elementos
Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 12 de 56.
Ahora que puedes crear vectores y añadirles elementos, necesitas saber cómo recuperar elementos específicos de tu vector. C++ proporciona dos formas principales de acceder a elementos individuales: el operador de corchetes y el método .at().
El operador de corchetes [] funciona igual que con los arrays normales. Especificas el índice del elemento al que quieres acceder:
std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0]; // Obtiene 10
int third = numbers[2]; // Obtiene 30El método .at() proporciona una forma alternativa de acceder a los elementos con una diferencia importante: incluye la comprobación de límites (bounds-checking):
int first = numbers.at(0); // Obtiene 10
int third = numbers.at(2); // Obtiene 30La diferencia clave es la seguridad: si intentas acceder a un índice que no existe, [] puede causar un comportamiento impredecible, mientras que .at() lanzará una excepción para alertarte del error. Para fines de aprendizaje, ambos métodos funcionan bien, pero .at() proporciona protección adicional contra el acceso a posiciones no válidas en tu vector.
Desafío
FácilCrea un programa que demuestre el acceso a los elementos de un vector recuperando elementos específicos de un vector utilizando tanto el operador de corchetes como el método .at().
Se proporcionarán las siguientes entradas:
- Un número entero
nque representa el número de elementos en el vector - Luego,
nnúmeros enteros para poblar el vector - Un número entero
index1que representa el primer índice a acceder - Un número entero
index2que representa el segundo índice a acceder
Tu programa debe:
- Crear un
std::vector<int>llamadodata - Usar
push_back()para añadir cada uno de losnnúmeros de entrada al vector - Acceder al elemento en
index1usando el operador de corchetes[]y almacenarlo en una variable llamadavalue1 - Acceder al elemento en
index2usando el método.at()y almacenarlo en una variable llamadavalue2 - Imprimir los valores accedidos y sus índices correspondientes
- Imprimir el primer y último elemento del vector usando el acceso basado en índices
Usa exactamente el siguiente formato de salida:
Element at index [index1]: [value1]
Element at index [index2]: [value2]
First element: [first value]
Last element: [last value]Para acceder al último elemento, usa data.size() - 1 como índice con el operador de corchetes.
Hoja de referencia
Los vectores de C++ proporcionan dos formas principales de acceder a elementos individuales:
Operador de corchetes []:
std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0]; // Obtiene 10
int third = numbers[2]; // Obtiene 30El método .at():
int first = numbers.at(0); // Obtiene 10
int third = numbers.at(2); // Obtiene 30La diferencia clave es la seguridad: [] puede causar un comportamiento impredecible si se accede a índices no válidos, mientras que .at() lanza una excepción para la protección de comprobación de límites.
Para acceder al último elemento, use data.size() - 1 como índice.
Pruébalo tú mismo
#include <iostream>
#include <vector>
using namespace std;
int main() {
// Leer entrada
int n;
cin >> n;
vector<int> data;
// Leer n enteros y añadirlos al vector
for (int i = 0; i < n; i++) {
int num;
cin >> num;
data.push_back(num);
}
int index1, index2;
cin >> index1;
cin >> index2;
// TODO: Escribe tu código abajo
// Acceder a los elementos usando el operador [] y el método .at()
// Almacenar los valores accedidos en value1 y value2
// Mostrar los resultados
cout << "Element at index " << index1 << ": " << value1 << endl;
cout << "Element at index " << index2 << ": " << value2 << endl;
cout << "First element: " << /* acceder al primer elemento */ << endl;
cout << "Last element: " << /* acceder al último elemento usando data.size() - 1 */ << endl;
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea