Hoi,
Ik heb de volgende code die gebruikt maakt van een stl list met als template element een pair:
Nu wil ik dus de laatste loop, mocht er niks eerder gevonden zijn, dus alsnog iets doen.
Nu kan ik volgens mij niet op end() testen aangezien deze iterator voorbij het laatste element is. Ik wilde dus Iter + 1, of end() - 1 proberen om dit te kunnen testen, echter Visual C++ 6.0 geeft dan de volgende fout:
Kortom, hoe kan ik kijken of de huidige iterator het laatste element is? Ik kan uiteraard een teller bijhouden, maar via de iterator is natuurlijk netter (en sneller)
Ik heb de volgende code die gebruikt maakt van een stl list met als template element een pair:
C++:
1
2
3
4
5
6
7
8
9
| for( DimensionsList::const_iterator Iter = DimensionsLst.begin(); Iter != DimensionsLst.end(); Iter++) { if( ((Iter->first >= inoutWidth) && (Iter->second >= inoutHeight)) || (Iter == (DimensionsLst.end() - 1))) { inoutWidth = Iter->first; inoutHeight = Iter->second; break; } } |
Nu wil ik dus de laatste loop, mocht er niks eerder gevonden zijn, dus alsnog iets doen.
Nu kan ik volgens mij niet op end() testen aangezien deze iterator voorbij het laatste element is. Ik wilde dus Iter + 1, of end() - 1 proberen om dit te kunnen testen, echter Visual C++ 6.0 geeft dan de volgende fout:
code:
1
2
| error C2678: binary '-' : no operator defined which takes a left-hand operand of type 'class std::list<struct std::pair<unsigned long,unsig ned long>,class std::allocator<struct std::pair<unsigned long,unsigned long> > >::iterator' (or there is no acceptable conversion) |
Kortom, hoe kan ik kijken of de huidige iterator het laatste element is? Ik kan uiteraard een teller bijhouden, maar via de iterator is natuurlijk netter (en sneller)
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs