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.