Re[2]: STL
От: Шинкевич Андрей Михайлович Россия  
Дата: 26.03.07 18:37
Оценка:
Здравствуйте, Роман! Ценю Ваш художественный подход при ответе на вопрос. Спасибо. Могли бы Вы прокомментировать случай VZ для lower_bound? Вернет ли метод lower_bound(ключ к V, пусть 1) итератор на Z?
Андрей

RO>Здравствуйте, Аноним, Вы писали:


А>>Если кто хорошо знаком с std::multimap::lower_bound(key), объясните, пожалуйста, в каком случае метод может вернуть iterator, указывающий на элемент с ключом большим key, тогда как мне нужны элементы только с ключом key?


RO>Для понимания lower_bound, uppper_bound, equal_range лучше представлять итераторы не как указатели на элементы, а как указатели позиций вставки новых элементов. Если в контейнере n элементов, то итераторов будет n+1: begin() обозначает вставку перед первым элементом, end() — после последнего, begin() + i — между элементами с номерами i-1 и i. Сравни с двумя вариантами отображения курсора для ввода с клавиатуры, который изображают вертикальной или горизонтальной чертой:


RO>


RO>Теперь (надеюсь) определения lower_bound и upper_bound в стандарте станут предельно понятны:

RO>

RO>[lower_bound] Finds the first position into which value can be inserted without violating the ordering.
RO>[upper_bound] Finds the furthermost position into which value can be inserted without violating the ordering.


RO>

RO>Зеленым цветом — lower_bound('x'), красным цветом — upper_bound('x').

RO>Для reverse_iterator тоже есть картинка
Автор: Odi$$ey
Дата: 14.03.03
, сам Odi$$ey рисовал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.