обоснование для std :: lower_bound и std :: upper_bound?

STL предоставляет бинарные функции поиска std :: lower_bound и std :: upper_bound, но я не использую их, потому что не могу вспомнить, что они делают, потому что их контракты кажутся мне совершенно загадочными.

Просто взглянув на имена, я бы предположил, что «lower_bound» может быть сокращением от «последней нижней границы»,
то есть последний элемент в отсортированном списке, который является <= заданным значением (если оно есть).
И точно так же я бы предположил, что «upper_bound» может быть сокращенным от «первой верхней границы»,
т. е. первый элемент в отсортированном списке, который> = заданный val (если есть).

Но документация говорит, что они делают что-то отличное от этого - что-то, что кажется мне смесью обратной и случайной. Перефразируя документ:
- lower_bound находит первый элемент, который> = val
- upper_bound находит первый элемент, который> val

Так что lower_bound вообще не находит нижней границы; он находит первыйверхний связанный !? И upper_bound находит первыйстрогий верх связаны.

Есть ли в этом смысл?? Как ты это помнишь?

Ответы на вопрос(10)

Ваш ответ на вопрос