Диапазон одного ключа equal_range в C++
Метод equal_range возвращает пару итераторов: начало блока равных ключей и позицию сразу после него.
В std::multimap и std::multiset
такой полуоткрытый диапазон может охватывать
несколько элементов. Перебор идет от
first до second, не включая
second - как у обычного полуинтервала
в цикле.
Запишем multimap с двумя значениями для
одного ключа и выведем только их, обходя
диапазон:
#include <map>
std::multimap<std::string, int> tags;
tags.insert({"red", 1});
tags.insert({"red", 2});
tags.insert({"blue", 3});
auto span = tags.equal_range("red");
for (auto it = span.first; it != span.second; ++it) {
std::cout << it->second << "\n";
}
Создайте multiset из четырех чисел 2,
2, 5, 2. Запросите
equal_range для 2 и выведите
каждый элемент диапазона с новой строки.