Un Set (Conjunto) es una colección de elementos únicos. Si intentas insertar un dato que ya existe, el Set lo ignora. Es la implementación informática directa de la teoría de conjuntos matemática.

Imagen 47. Operaciones de conjuntos (Venn)
Operaciones fundamentales: Visualización de Unión (A ∪ B), Intersección (A ∩ B) y Diferencia (A - B). Estas son las operaciones lógicas que programaremos.
En C no existe la clase "Set" nativa. Debemos construirla. Tenemos dos opciones principales: usar una Tabla Hash (HashSet) para velocidad O(1) pero sin orden, o usar un Árbol Binario de Búsqueda (TreeSet) para velocidad O(log n) manteniendo los datos ordenados.

Imagen 48. HashSet vs TreeSet: Memoria y Estructura
Arquitectura interna: A la izquierda, un HashSet usando buckets dispersos. A la derecha, un TreeSet organizando los mismos datos jerárquicamente.
Un Mapa (o Diccionario) es una estructura que asocia una "Clave" (Key) única con un "Valor" (Value). Es como un array, pero en lugar de usar índices numéricos (0, 1, 2), puedes usar cualquier tipo de dato como índice (ej: nombres, códigos de producto).

Imagen 49. El modelo Clave-Valor (Key-Value)
Flujo de datos: La Clave entra, se procesa (hashing o búsqueda en árbol) y nos da acceso directo al Valor asociado. La Clave es el "ID", el Valor es la "Información".