La provincia in questione è un dato che ottieni "da fuori" del programma come stringa?
In ogni caso, sì, le mappe servono proprio a questo - legare una "chiave" complicata a un qualche valore. La differenza tra una map e una unordered_map è che la prima è sostanzialmente un RB tree (inserimento/cancellazione/ricerca in O(log n), tipicamente ogni valore su un nodo per i fatti suoi => pattern di allocazione non sempre ottimale, sequenza sempre ordinata in base alla chiave, necessario un operatore di confronto tra le chiavi), la seconda una hash table (ricerca e cancellazione in O(1), inserimento in O(1) ammortizzato, buona località, sequenza ordinata in un ordine non deterministico - dipende dalla funzione di hash, necessaria una buona funzione di hash per le chiavi). Nota importante, per unordered_map serve C++11.
In linea di massima, se non ti serve che la sequenza sia ordinata per chiavi, la unordered_map ha solitamente caratteristiche di performance migliori, anche se per tabelle di lookup "fissate" un normale vettore ordinato con ricerca dicotomica può essere una buona concorrente (e se le chiavi sono interi in sequenza una tabella di lookup "secca" è ancora meglio).
In ogni caso, se ci sono così poche chiavi qualunque cosa va bene.