Re: STL
От: Кодт Россия  
Дата: 26.03.07 16:30
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


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

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

Нештатный случай: всякое неопределённое и неспецифицированное поведение
— криво написанный предикат, не удовлетворяющий аксиоматике строгого порядка
— предикат (параметризуемый в рантайме) смогли поменять на ходу
— сломали константность ключей у элементов и поменяли ключи
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.