// std::vector: lo que en C era un arreglo con malloc y realloc.
#include <iostream>
#include <string>
#include <vector>

struct Score {
    std::string name;
    int points;
};

int main() {
    std::vector<int> grades;
    grades.push_back(14);
    grades.push_back(9);
    grades.push_back(17);
    std::cout << "tamaño: " << grades.size() << "\n";
    std::cout << "último: " << grades.back() << "\n";

    grades[1] = 11;
    grades.erase(grades.begin());
    std::cout << "primero tras borrar: " << grades[0] << "\n";

    std::vector<int> zeros(3, 0);
    std::vector<int> primes = {2, 3, 5};
    std::vector<int> other = primes;
    other[0] = 7;
    std::cout << primes[0] << " " << other[0] << "\n";
    std::cout << "iguales: " << (primes == other) << "\n";
    std::cout << "ceros: " << zeros.size() << ", vacío: " << zeros.empty() << "\n";

    std::vector<Score> table;
    table.push_back({"Ana", 18});
    table.push_back({"Luis", 12});
    std::cout << table[1].name << " tiene " << table[1].points << "\n";

    grades.clear();
    std::cout << "tras clear: " << grades.size() << "\n";
    return 0;
}
