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;
}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;
}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"].