нижняя граница в наборе (C ++) - PullRequest
3 голосов
/ 19 октября 2010

У меня есть набор, и я хочу найти в нем наибольшее число, не превышающее x. (что-то вроде lower_bound (x)) как мне это сделать? Есть ли предопределенные функции?

set<int> myset;
myset.insert(blahblahblah);
int y;
//I want y to be greatest number in myset not greater than x

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Вы можете использовать upper_bound следующим образом: upper_bound(x)--. Верхняя граница дает вам первый элемент больше, чем x, так что элемент, который вы ищете, это тот, что был до этого. Вам нужен особый случай, если upper_bound возвращает begin().

0 голосов
/ 19 октября 2010

В дополнение к lower_bound есть также upper_bound C ++ ссылка

Функция возвращает итератор для первого значения, которое строго больше вашего.Если он возвращает begin (), то все они равны, в противном случае вычтите один из полученного итератора, чтобы получить искомое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...