PDA

Visualizza la versione completa : [C++] Mappe e iteratori


tina8
10-05-2010, 01:32
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:


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


Grazieeee

MacApp
10-05-2010, 02:04
{sbagliato}

shodan
10-05-2010, 12:46
[CODE]
map<arg1,arg2>::iterator ed = mappa.end();
advance(ed,-1);

for(it= mappa1.begin(); it!=ed; ++it){}

tina8
11-05-2010, 19:12
Ho provato con il seguente 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 ????

:dh:

mogre
11-05-2010, 19:20
prova con

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

per i vector funziona, probabilmente anche per i map.

tina8
11-05-2010, 19:27
Non funziona..ma ho risolto utilizzando l'istruzione break... :stordita:

shodan
11-05-2010, 20:07
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.


map<wstring,vector<wstring>>::iterator ed= mappa1.begin();
advance(ed,mappa1.size()-1);
for(it= mappa1.begin(); it!=ed; ++it){}

tina8
31-12-2010, 01:22
Grazie ha funzionato, adesso avrei bisogno di visitare la mappa dall'ultimo elemento al primo, ho provato con :

for(it= mappa1.end(); it!=mappa1.begin(); --it)

ma non funziona, hai qualche suggerimento da darmi??? Grazie

MItaly
31-12-2010, 01:40
for(map<wstring,vector<wstring> >::reverse_iterator it=mappa1.rbegin(); it!=mappa1.rend(); ++it)

Loading