Здравствуйте, Николай. Спасибо Вам за ответ. Но ведь, согласно документации, в первом случае метод вернет итератор == multimap.end().
Андрей
К>Здравствуйте, <Аноним>, Вы писали:
А>>Если кто хорошо знаком с std::multimap::lower_bound(key), объясните, пожалуйста, в каком случае метод может вернуть iterator, указывающий на элемент с ключом большим key, тогда как мне нужны элементы только с ключом key?
К>В двух случаях.
К>Штатный случай: когда элементов == key нет, зато есть элементы > key. К>lower_bound возвращает итератор на первый элемент, больший-или-равный ключу. Это место является точкой вставки в начало серии равных элементов. К>upper_bound, кстати говоря, вернёт итератор на этот же элемент (строго-больший ключа). К>А последовательность элементов, равных ключу — полуинтервал [lower_bound(key), upper_bound(key)) — окажется пустой, что и следовало ожидать.
К>Нештатный случай: всякое неопределённое и неспецифицированное поведение К>- криво написанный предикат, не удовлетворяющий аксиоматике строгого порядка К>- предикат (параметризуемый в рантайме) смогли поменять на ходу К>- сломали константность ключей у элементов и поменяли ключи