Indexnummer des Elements ermitteln, auf den der Iterator zeigt?



  • Hallo,

    folgender Code ist gegeben:

    std::vector<unsigned int> FCosts(4);
    typedef std::vector<unsigned int>::iterator iIterator;
    // Vector wird befüllt...
    
    iIterator iNextElement = std::min_element(FCosts.begin(), FCosts.end());
    

    Nun möchte ich die Indexnummer des Elements ermitteln können, auf den der Iterator zeigt. Wie ist das möglich?
    Danke im Voraus!



  • Okay, ich könnte zwar den Container komplett durch iterieren, und dabei das jeweilige, aktuelle Element mit dem des Iterators vergleichen. Gibt es dafür aber keine elegantere STL-Methode? Bei cppreference.com habe ich nichts entsprechendes dazu gefunden, aber vielleicht habe ich es nur übersehen. Weis jemand Rat?



  • vector<int>::difference_type index = iNextElement - FCosts.begin();
    


  • Christoph schrieb:

    vector<int>::difference_type index = iNextElement - FCosts.begin();
    

    Oder auch (funktioniert dann mit allen Containern):

    vector<int>::difference_type index = std::distance(FCosts.begin(), iNextElement);
    


  • Hey spitze, das hat mir sehr weitergeholfen! Vielen Dank! 🙂



  • Die Version mit std::distance ist auf jeden Fall zu bevorzugen, da man dann keine Abhängigkeit vom Iteratortyp hat.


Log in to reply