Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81

    [C++] Mappe e iteratori

    Ciao a tutti..conoscete un modo per poter scorrere una mappa con un iteratore fino al penultimo elemento. Il codice da me utilizzato è il seguente, ma si ferma sull'ultimo elemento:
    codice:
    for(it= mappa1.begin(); it!=mappa1.end(); it++){}
    Grazieeee

  2. #2

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    [CODE]
    map<arg1,arg2>::iterator ed = mappa.end();
    advance(ed,-1);

    for(it= mappa1.begin(); it!=ed; ++it){}
    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
    Apr 2009
    Messaggi
    81
    Ho provato con il seguente codice:
    codice:
    map<wstring,vector<wstring>>::iterator ed= mappa1.end();
    advance(ed,-1);
    for(it= mappa1.begin(); it!=ed; ++it){}
    ma mi apre la finestra di debug contenente il seguente errore:
    Expression:map/set iterator not decrementable ????


  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    69
    prova con

    for(it= mappa1.begin(); it!=mappa1.end()-1; it++){}

    per i vector funziona, probabilmente anche per i map.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81
    Non funziona..ma ho risolto utilizzando l'istruzione break...

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da tina8
    Ho provato con il seguente codice:
    ma mi apre la finestra di debug contenente il seguente errore:
    Expression:map/set iterator not decrementable ????
    Strano. Il map::iterator è di tipo bidirezionale. Non è che la mappa sia const?
    Prova così.
    codice:
    map<wstring,vector<wstring>>::iterator ed= mappa1.begin();
    advance(ed,mappa1.size()-1);
    for(it= mappa1.begin(); it!=ed; ++it){}
    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.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    81
    Grazie ha funzionato, adesso avrei bisogno di visitare la mappa dall'ultimo elemento al primo, ho provato con :
    codice:
    for(it= mappa1.end(); it!=mappa1.begin(); --it)
    ma non funziona, hai qualche suggerimento da darmi??? Grazie

  9. #9
    codice:
    for(map<wstring,vector<wstring> >::reverse_iterator it=mappa1.rbegin(); it!=mappa1.rend(); ++it)
    Amaro C++, il gusto pieno dell'undefined behavior.

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.