AnyCompiler

STL Containers e Iterators

std::map<K, V> almacena pares clave-valor, manteniéndolos ordenados por clave automáticamente. Iterarlo con range-based for produce pares clave-valor en ese orden, con .first y .second dándote la clave y el valor respectivamente.

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    map<string, int> ages;
    ages["Alice"] = 30;
    ages["Bob"] = 25;

    for (const auto& pair : ages) {
        cout << pair.first << ": " << pair.second << endl;
    }
    return 0;
}
Output
Alice: 30
Bob: 25

std::set

std::set almacena valores únicos en orden ordenado, descartando automáticamente los duplicados a medida que se insertan — la misma estructura de árbol subyacente que map, solo que sin un valor separado adjunto a cada clave.

#include <iostream>
#include <set>
using namespace std;

int main() {
    set<int> numbers = {5, 3, 1, 4, 1, 5};
    for (int n : numbers) {
        cout << n << " ";
    }
    cout << endl;
    return 0;
}
Output
1 3 4 5 

Todo STL container — vector, map, set, y otros — soporta esta misma sintaxis de range-based for, porque todos exponen el par de iterators begin()/end() en el que range-based for se apoya por debajo.

Siguiente: lambdas y algorithms — funciones anónimas combinadas con la propia librería algorithm del STL.

Practice exercise

Crea un map<string, int> llamado ages. Inserta "Alice" -> 30 y "Bob" -> 25. Imprime ages["Alice"].