Rückgabe & Iterator gibt die Adresse des Iterators zurück. Wenn Sie einen Verweis auf das Element zurückgeben möchten, geben Sie den Iterator selbst zurück.
Beachten Sie, dass Sie den Vektor nicht als global verwenden müssen, um den Iterator/Zeiger zurückzugeben, sondern dass Operationen im Vektor den Iterator ungültig machen können. Das Hinzufügen von Elementen zum Vektor kann z. B. die Vektorelemente an eine andere Position verschieben, wenn die neue Größe() größer als der reservierte Speicher ist. Das Löschen eines Elements vor dem gegebenen Element aus dem Vektor bewirkt, dass der Iterator auf ein anderes Element verweist.
In beiden Fällen kann es je nach STL-Implementierung schwierig sein, mit nur gelegentlich auftretenden Fehlern zu debuggen.
BEARBEITEN nach Kommentar: 'ja, ich wollte den Iterator nicht zurückgeben a) weil sein const, und b) sicher ist es nur ein lokaler, temporärer Iterator?- Krakkos '
Iteratoren sind nicht mehr oder weniger lokal oder temporär als jede andere Variable und sie sind kopierbar. Sie können es zurückgeben und der Compiler wird die Kopie für Sie machen, so wie es mit dem Zeiger wird.
Jetzt mit der Const-Ness. Wenn der Aufrufer Änderungen über das zurückgegebene Element (ob Zeiger oder Iterator) durchführen möchte, sollten Sie einen nichtkonstanten Iterator verwenden. (Entfernen Sie einfach 'const_' aus der Definition des Iterators).
Ich schlage vor, Sie diesen Artikel von Scott Meyers lesen über Iteratoren Nutzung: http://www.ddj.com/cpp/184401406 gibt er Richtlinien über const_iterator Umwandlung iterator usw. –