Re: STL
От: Roman Odaisky Украина  
Дата: 26.03.07 17:39
Оценка: 71 (6)
Здравствуйте, Аноним, Вы писали:

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


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



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

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



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

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