Tema 5
Structs y tipos personalizados
Patrón de examen
Cuando necesites ordenar por múltiples criterios o agrupar datos relacionados. Es más legible que índices paralelos.
Explicación
Struct en C++
Agrupa variables relacionadas bajo un nombre.
struct Punto { int x, y; };
struct Evento { int tiempo, tipo; };
Usos típicos en olimpiadas
- Representar puntos, aristas, eventos
- Ordenar por múltiples criterios
- Reemplazar índices paralelos con un solo arreglo de structs
Ordenar structs
sort(v.begin(), v.end(), [](Evento a, Evento b) {
if (a.tiempo != b.tiempo) return a.tiempo < b.tiempo;
return a.tipo < b.tipo;
});
pair y tuple (alternativas rápidas)
pair<int,int> p = {3, 5};
cout << p.first << " " << p.second;
// pair se ordena lexicográficamente por defecto
vector<pair<int,int>> v;
sort(v.begin(), v.end()); // ordena por .first, luego .second