Gibt es einen STL-Algorithmus, um die letzte Instanz eines Wertes in einer Sequenz zu finden?

Verwendung von STL -, ich will zu finden, die Letzte Instanz von einem bestimmten Wert in einer Sequenz.

Diesem Beispiel finden die ersten Instanz 0 in einem Vektor von ints.

#include <algorithm>
#include <iterator>
#include <vector>

typedef std::vector<int> intvec;
intvec values;
//... ints are added to values
intvec::const_iterator split = std::find(values.begin(), values.end(), 0);

Jetzt kann ich mit split Dinge zu tun, die zu den Teilbereichen begin() .. split und split .. end(). Ich möchte etwas ähnliches machen, aber mit split-set, um die letzten Instanz 0. Mein Erster Instinkt war der Einsatz von reverse-Iteratoren.

intvec::const_iterator split = std::find(values.rbegin(), values.rend(), 0);

Diese funktioniert nicht, da split ist die falsche Art von iterator. So ...

intvec::const_reverse_iterator split = std::find(values.rbegin(), values.rend(), 0);

Aber das problem ist jetzt, dass kann ich nicht machen, "Kopf" und "Schwanz" Bereiche wie begin(), split und split, end() weil diejenigen, die nicht die reverse-Iteratoren. Gibt es eine Möglichkeit, konvertieren Sie die reverse-iterator, um die entsprechenden vorwärts (oder random access) iterator? Gibt es einen besseren Weg zu finden, der letzten Instanz eines Elements in der Sequenz so, dass ich Links mit einem kompatiblen iterator?

InformationsquelleAutor der Frage Adrian McCarthy | 2009-12-23

Schreibe einen Kommentar