Menu
Coddy logo textTech

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 30

El 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 30

La 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.

challenge icon

Desafío

Fácil

Crea 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 n que representa el número de elementos en el vector
  • Luego, n números enteros para poblar el vector
  • Un número entero index1 que representa el primer índice a acceder
  • Un número entero index2 que representa el segundo índice a acceder

Tu programa debe:

  1. Crear un std::vector<int> llamado data
  2. Usar push_back() para añadir cada uno de los n números de entrada al vector
  3. Acceder al elemento en index1 usando el operador de corchetes [] y almacenarlo en una variable llamada value1
  4. Acceder al elemento en index2 usando el método .at() y almacenarlo en una variable llamada value2
  5. Imprimir los valores accedidos y sus índices correspondientes
  6. 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 30

El método .at():

int first = numbers.at(0);    // Obtiene 10
int third = numbers.at(2);    // Obtiene 30

La 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;
}
quiz iconPonte a prueba

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