Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    48

    [C++] Sfogliare elementi di una map tramite ciclo for

    Salve a tutti,
    Sto iniziando a prendere un po la mano con l'uso delle "map".
    In questo programma che sto facendo come esercitazione x l'università, mi ritrovo a dover visitare tutti gli elementi di una map, che è membro di una classe.
    Ho letto in giro che gli elementi vengono visitati cosi:

    map->first, map->second, map->third

    ora il problema è che io vorrei fare lo stesso pero tramite un ciclo for... come cn un array.
    è fattibile???

    GRAZIE!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da Peppyno Visualizza il messaggio
    Salve a tutti,
    come cn un array.
    è fattibile???
    http://www.cplusplus.com/reference/map/map/operator[]/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    map->third non esiste.
    Per scansionare una map puoi usare:
    codice:
    for (auto& it : my_map) {
        cout << it.first << '\n';
        cout << it.second << '\n';
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    48
    Quindi .first e .second indicano l'elemento primo e l'elelemento secondo degli elementi che compongono la map????

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    48
    Ad esempio per inserire 3 elementi in una map cosa dovrei aggiungere per far capire che il numero di elementi è 3?

    codice:
    for (auto& it : my_map) {
        it.first =  /*numero casuale*/;
        it.second =  /*numero casuale*/;
    }

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Una mappa è composta da una serie di coppie (std:air<> per la precisione) chiave/valore i cui campi sono appunto .first e .second.
    Per avere tre elementi devi inserire tre coppie.
    Modo 1)
    codice:
    std::map<int,int> myMap;
    myMap.insert(std::make_pair(3,5)); // etc
    Modo 2)
    codice:
    std::map<int,int> myMap;
    myMap[3]=5; // etc
    Occhio che le chiavi sono uniche per cui puoi inavvertitamente sovrascrivere un valore se usi la stessa chiave d'accesso.

    http://en.cppreference.com/w/cpp/container/map
    Ultima modifica di shodan; 05-06-2015 a 22:37
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    48
    Quindi...

    [CODE]
    for (auto& it : my_map) {

    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    48
    Quindi...

    codice:
    for (auto& it : my_map) {
               for(i=0; i<3; i++){
               pair<int, int> = {NUMERO , NUMERO}
         }
    }

  9. #9
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Quel che hai scritto non ha senso. Leggi le modifiche al precedente post.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    48
    Grazie mille, ho utilizzato il metodo 1

    codice:
    std::map<int,int> myMap;
    for(i=0; i<3; i++){
    myMap.insert(std::make_pair(3,5)); // etc
    }
    Ora se volessi visualizzarli:
    codice:
    for (it=myMap.begin(); it!=myMap.end(); ++it) {
        cout << it.first << '\n';
        cout << it.second << '\n';
    }


    ????

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 © 2024 vBulletin Solutions, Inc. All rights reserved.