Begründung für std :: lower_bound und std :: upper_bound?

STL stellt die binären Suchfunktionen std :: lower_bound und std :: upper_bound zur Verfügung, aber ich verwende sie eher nicht, weil ich mich nicht erinnern kann, was sie tun, weil mir ihre Verträge völlig rätselhaft erscheinen.

Wenn ich nur die Namen betrachte, würde ich vermuten, dass "lower_bound" die Abkürzung für "last lower bound" ist.
das letzte Element in der sortierten Liste, das <= der gegebene Wert ist (falls vorhanden).
Und in ähnlicher Weise würde ich vermuten, dass "upper_bound" die Abkürzung für "first upper bound" ist.
das erste Element in der sortierten Liste, das> = der gegebene Wert ist (falls vorhanden).

Aber die Dokumentation besagt, dass sie etwas ganz anderes tun - etwas, das für mich eine Mischung aus Rückwärts und Zufällig zu sein scheint. So umschreiben Sie das Dokument:
- lower_bound findet das erste Element, das> = val ist
- upper_bound findet das erste Element, das> val ist

Lower_bound findet also überhaupt keine Untergrenze; es findet den erstenOberer, höher gebunden!? Und upper_bound findet den erstenstrenge obere gebunden.

Ergibt das irgendeinen Sinn? Wie erinnerst du dich daran?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage