von iterator auf reverse_iterator casten?
-
Habe eine std::list , und will vo neinem best. Position(iterator) nach recht oder links suchen... wenn ich nach links suche köntne ich doch den reverse_iterator benutzen, allerding müsste ich die Position(iteratator) auf reverser_itterator casten und iterieren.. geht das?
-
glaub ich kaum. die überladen beide den ++op zum iterieren und durch casten kannst du zwar die form eines objekts verändern, nicht aber dessen innereien.
-
ok, dann werd ich halt nach linkt mit -- iterieren.. danke
-
Da der reverse_iterator auch nur ein Adapter ist kannst Du zumindest zwischen ihnen konvertieren:
list<int>::iterator it( mylist.begin() ); ++it; ++it; ++it; // it auf Position 3 list<int>::reverse_iterator rit( it ); ++rit; ++rit; // rit auf Position 1 list<int>::iterator iit( rit.base() ); ++iit; ++iit; ++iit; // iit auf Position4Ungetestet, aber wüsste nichts was dagegen spräche.
-
welche vorteile hat denn der reverse_iterator im gegesatzt zum normalen iterator bei dekrementierung
-
BorisDieKlinge schrieb:
welche vorteile hat denn der reverse_iterator im gegesatzt zum normalen iterator bei dekrementierung
Soweit ich weiss keine. Der wesentliche Unterschied zwischen reverse_iterator und iterator ist der, dass der reverse_iterator bei ++ rückwärts geht und bei -- vorwärts. Das ist dann vor allem bei den Algorithmen in der STL wichtig, wodurch du mit den gleichen Funktionen die Container über reverse_iteratoren auch rückwärts behandeln kannst.
Aber grundsätzlich entdeckt man dies schon beim Code von LordJaxom.
Grüssli