Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    177

    [C++] enum, map, unordered_map

    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
    Ultima modifica di ing82; 12-10-2016 a 22:56 Motivo: aggiunto nel titolo il linguaggio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.