Класс multimap
Класс multimap - это ассоциативный контейнер из библиотеки STL, который хранит элементы в виде пар ключ-значение. В отличие от класса map, multimap позволяет хранить несколько элементов с одинаковыми ключами. Элементы внутри контейнера всегда отсортированы по ключу в порядке возрастания. При вставке нового элемента в первый параметр передается ключ, а во второй - значение, которое нужно связать с этим ключом.
Синтаксис
#include <map>
std::multimap<KeyType, ValueType> name;
std::multimap<KeyType, ValueType> name = {{key1, value1}, {key2, value2}};
Пример
Давайте создадим контейнер multimap и добавим в него несколько элементов с одинаковыми ключами:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
multimap<int, string> mm;
mm.insert({1, "abcde"});
mm.insert({2, "12345"});
mm.insert({1, "hello"});
for (auto it = mm.begin(); it != mm.end(); ++it)
{
cout << it->first << " : " << it->second << endl;
}
return 0;
}
Результат выполнения кода:
"1 : abcde"
"1 : hello"
"2 : 12345"
Пример
Давайте подсчитаем количество элементов с определенным ключом с помощью метода count:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
multimap<int, string> mm;
mm.insert({1, "abcde"});
mm.insert({1, "12345"});
mm.insert({2, "hello"});
cout << mm.count(1) << endl;
cout << mm.count(2) << endl;
return 0;
}
Результат выполнения кода:
2
1
Пример
Давайте найдем все элементы с заданным ключом, используя метод equal_range:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
multimap<int, string> mm;
mm.insert({1, "abcde"});
mm.insert({1, "12345"});
mm.insert({2, "hello"});
auto range = mm.equal_range(1);
for (auto it = range.first; it != range.second; ++it)
{
cout << it->second << endl;
}
return 0;
}
Результат выполнения кода:
"abcde"
12345
Смотрите также
-
класс
map,
который хранит уникальные ключи -
метод
insert,
который добавляет элементы в контейнер -
метод
count,
который подсчитывает количество элементов с ключом -
метод
equal_range,
который возвращает диапазон элементов с заданным ключом