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 Position4
    

    Ungetestet, aber wüsste nichts was dagegen spräche.



  • welche vorteile hat denn der reverse_iterator im gegesatzt zum normalen iterator bei dekrementierung


  • Administrator

    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


Anmelden zum Antworten