Il problema e' rappresentare/associare ad ogni provincia una zona fra quattro disponibili.
All'inizio pensavo di fare cosi', sfruttando solo enum:
codice:
enum Zona: unsigned int
{
zona1_a,
zona1_b,
zona2,
zona3
};
enum Provincia: unsigned int
{
Sondrio=Zona::zona1_a,
Milano=Zona::zona1_b,
Bari=Zona::zona2,
Roma=Zona::zona3
//altre
};
col problema che:
- non posso associare direttamente alla stringa della provincia il termine dell'enum Provincia, nel senso che non posso usare la variabile std::string prov per effettuare la ricerca per ricavare a che zona appartiene senza passaggi ulteriori;
- il ciclo switch di ricerca diventa "infinito" da scrivere.
Ho sentito parlare, ma non ho mai studiato / usato le map / unordered_map del C++, che pero' potrebbero fare al caso mio.
Pensavo di poter fare cosi'
codice:
enum Zona: unsigned int
{
zona1_a,
zona1_b,
zona2,
zona3
};
std::unordered_map<std::string,Zona> mymap =
{
{"Sondrio",Zona::zona1_a},
{"Milano",Zona::zona1_b},
{"Bari",Zona::zona2},
{"Roma",Zona::zona3}
//altre
};
in quanto poi potrei ricavare la zona di appartenenza per le successive operazioni in questo modo
codice:
std::string prov = "Milano";
Zona zona = mymap.at(prov);
Ho dato un occhio, anzi, anche due, alla documentazione ufficiale, e alle discussioni gia' presenti nel forum ( http://forum.html.it/forum/search.php?searchid=3592520 ), ma non riesco a capire:
- se effettivamente map/unordered map puo' essere utile in questo caso;
- se lo e', meglio map o unordered_map? Io pensavo unoredered_map, in quanto i miei dati non hanno un ordine particolare da rispettare;
- se non lo e', cosa puo' esserlo? Altri container della STL, ma sinceramente non ne vedo altri...
Grazie