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