с использованием набора контейнеров STL upper_bound

у меня есть следующий код, который отлично работает.

Задача: по заданному числу n найти следующее и предыдущее число n.

На основе приведенного ниже примера: если n = 50, то я получу 60 и 40 отдельно.

Я могу получить 60, используя upper_bound. Но как мне получить число до 50, я не могу найти предоставленный алгоритм для этого.

set myset;
set::iterator it,itlow,itup;

for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90
itup=myset.upper_bound (50);                 // 
cout << "upper_bound at position " << (*itup) << endl;
    //output: 60

Со ссылкой на http://www.cplusplus.com/reference/stl/set/lower_bound/сказано, что upper_bound «возвращает итератор, указывающий на первый элемент в контейнере, не сравнивает меньше, чем x», но я уверен, что есть что-то еще, что указывает на что-то, что сравнивает меньше, чем x.

Заранее спасибо! :)

5
задан mister 12 May 2012 в 20:46
поделиться