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

STL bietet binäre Suche-Funktionen std::lower_bound und std::upper_bound
aber ich Neige dazu, Sie nicht zu verwenden, weil ich habe nicht in der Lage zu erinnern, was Sie tun,
weil Ihre Verträge scheinen völlig rätselhaft zu mir.

Nur aus der Betrachtung der Namen,
Ich würde vermuten, dass "lower_bound" könnte kurz sein für "Letzte untere Schranke",
d.h. das Letzte element in der sortierten Liste, die <= die angegebenen val (falls vorhanden).
Und ähnlich Schätze ich "upper_bound" kann auch kurz für "erste Obere Schranke",
d.h. das erste element in der sortierten Liste, ist >= die angegebenen val (wenn überhaupt).

Aber die Dokumentation sagt, Sie tun etwas anders,--
etwas, das scheint zu sein, eine Mischung von rückwärts und zufällige, zu mir.
Um die Worte des doc:
- lower_bound findet das erste element, dass s >= val
- upper_bound findet das erste element, dass s > val

So lower_bound nicht finden, eine untere Schranke an alle, es findet die erste oberen gebunden!?
Und upper_bound findet die erste strenge oberen gebunden.

Macht das Sinn??
Wie erinnern Sie sich daran?

InformationsquelleAutor der Frage Don Hatch | 2014-05-08

Schreibe einen Kommentar