& lt; Algorithmus & gt; Funktion zum Finden des letzten Artikels, der kleiner als gleich ist, wie lower_bound

Gibt es eine Funktion, die benutzt binäre Suche, wie lower_bound aber das gibt die letzten Element weniger-als-oder-gleich-zu nach einem bestimmten Prädikat?

lower_bound ist definiert zu:

Findet die position des ersten element in einer geordneten Reihe, die einen Wert hat größer als oder gleichwertig zu einen bestimmten Wert, wo die Bestellung Kriterium kann angegeben werden, indem ein binäres Prädikat.

sowie upper_bound:

Findet die position des ersten element in einer geordneten Reihe, die einen Wert hat, ist größer als einen bestimmten Wert, wo die Bestellung Kriterium kann angegeben werden, indem ein binäres Prädikat.

Speziell, ich habe einen container von Zeit bestellt Ereignisse und für eine bestimmte Zeit möchte ich finden das Letzte Element, das vor oder an diesem Punkt. Kann ich erreichen, das mit einer Kombination von upper/lower bound -, reverse-Iteratoren und mit std::greater oder std::greater_equal ?

BEARBEITEN:
Ein zwicken war nötig, um das user763305 Anregung zu bewältigen, wenn Sie Fragen, für einen Punkt vor der start der Reihe:

iterator it=upper_bound(begin(), end(), val, LessThanFunction());
if (it!=begin()) {
  it--; //not at end of array so rewind to previous item
} else {
  it=end(); //no items before this point, so return end()
}
return it;

InformationsquelleAutor der Frage the_mandrill | 2012-04-03

Schreibe einen Kommentar