iterator in reverse_iterator "konvertieren"



  • Gibt's ne Möglichkeit einen iterator in einen reverse_iterator umzuwandeln?

    Ich habe einen vector und eine Index-Variable, die den Index eines besonderen Items im vector speichert. Wenn ich durch den vector vorwärts iterieren will mache ich folgendes:

    vector<CItem*>::iterator it = m_vItems.begin();
    
      it += (m_FVIIndex); // den Index hinzuaddieren...
    
      for(; it!=m_vItems.end(); ++it)
      {
        /*...*/
      }
    

    Wie würde ich jetzt rückwärts iterieren, beginnend bei diesem Index??



  • Hi, nur mal so ins blaue geschossen

    for(; it!=m_vItems.begin(); --it)
    

    grüße, Con@n



  • vec.rbegin() liefert einen reverse_iterator

    der rest des codes sollte dann gleich sein - nur dass du natürlich nicht +=i schreiben kannst sondern etwas anderes schreiben musst 🙂 was, das verrate ich aber nicht.



  • afaik kann ein reverse_iterator aus einem beliebigen iterator konstruiert werden:

    std::reverse_iterator rit = m_vItems.begin() + FVIIndex;
    //...
    


  • Wie gemein 😃

    Ok, ich meld' mich wieder, falls ich noch Probleme habe.



  • Shlo schrieb:

    afaik kann ein reverse_iterator aus einem beliebigen iterator konstruiert werden:

    std::reverse_iterator rit = m_vItems.begin() + FVIIndex;
    //...
    

    Nee, das geht auf garkeinen Fall.


Anmelden zum Antworten