Re[2]: STL
От: Шинкевич Андрей Михайлович Россия  
Дата: 26.03.07 18:22
Оценка:
Здравствуйте, Николай. Спасибо Вам за ответ. Но ведь, согласно документации, в первом случае метод вернет итератор == multimap.end().
Андрей

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


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


К>В двух случаях.


К>Штатный случай: когда элементов == key нет, зато есть элементы > key.

К>lower_bound возвращает итератор на первый элемент, больший-или-равный ключу. Это место является точкой вставки в начало серии равных элементов.
К>upper_bound, кстати говоря, вернёт итератор на этот же элемент (строго-больший ключа).
К>А последовательность элементов, равных ключу — полуинтервал [lower_bound(key), upper_bound(key)) — окажется пустой, что и следовало ожидать.

К>Нештатный случай: всякое неопределённое и неспецифицированное поведение

К>- криво написанный предикат, не удовлетворяющий аксиоматике строгого порядка
К>- предикат (параметризуемый в рантайме) смогли поменять на ходу
К>- сломали константность ключей у элементов и поменяли ключи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.