Lección 10 · 10 de 20
Vectores · C++
Guarde listas en C++ con std::vector: crear, leer con [] y at(), saber su tamaño con size() y añadir elementos con push_back.

`std::vector` es la lista de C++: guarda elementos del mismo tipo, sabe cuántos tiene y puede crecer. El tipo va entre < >: std::vector<std::string> para los jugadores y std::vector<int> para sus puntos. Necesita #include <vector>.
`size()` da el número de elementos, `[]` lee o cambia uno por su posición, que empieza en 0, y `back()` devuelve el último. scores[1] = 110 cambia los puntos de Luis.
Para recorrer dos vectores a la vez se usa un for con índice. El índice es de tipo std::size_t, el entero sin signo que devuelve size(); con un int, algunos compiladores avisarían de que se comparan tipos distintos.
`push_back()` añade un elemento al final: Pablo y sus 130 puntos. Después, el for de rango suma todos los puntos, y static_cast<double> evita la división entera al calcular la media.
`at()` hace lo mismo que [], pero comprueba que la posición existe y, si no, lanza un error en lugar de leer memoria ajena. Por último, std::vector<int> lives(4, 3) crea un vector de 4 elementos que valen 3.
Código · main.cpp
#include <iostream>#include <string>#include <vector>int main() { // A vector is a list that knows its size and can grow. std::vector<std::string> players = {"Ana", "Luis", "Marta"}; std::vector<int> scores = {120, 95, 140}; std::cout << "Players: " << players.size() << '\n'; std::cout << "First: " << players[0] << ", last: " << players.back() << '\n'; scores[1] = 110; // [] also changes an element; positions start at 0 // A for with an index, to use two vectors at the same time. for (std::size_t i = 0; i < players.size(); i++) std::cout << players[i] << ": " << scores[i] << " points\n"; // push_back adds an element at the end. players.push_back("Pablo"); scores.push_back(130); // A range-based for reads every value. int total = 0; for (int s : scores) total += s; std::cout << "Total: " << total << ", average: " << total / static_cast<double>(scores.size()) << '\n'; // at() checks that the position exists; [] does not. std::cout << "Fourth player: " << players.at(3) << '\n'; // A vector of 4 elements, all of them 3. std::vector<int> lives(4, 3); std::cout << "Lives of player 2: " << lives[1] << " (" << lives.size() << " players)\n"; return 0;}Salida · c++ -std=c++17 main.cpp -o main && ./main
Players: 3 First: Ana, last: Marta Ana: 120 points Luis: 110 points Marta: 140 points Total: 500, average: 125 Fourth player: Pablo Lives of player 2: 3 (4 players)
Para recordar
std::vector<tipo>es una lista que puede crecer.v[i]lee o cambia el elementoi, contando desde 0.size()da el número de elementos yback(), el último.push_back(x)añade al final.at(i)comprueba que la posición existe.
Ejercicio
Cree un vector con las temperaturas máximas de lunes a sábado, añada la del domingo con push_back y escriba la media de la semana y cuántos días se superaron los 25 grados.