Здравствуйте, Аноним, Вы писали:
А>Если кто хорошо знаком с 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 рисовал.