Использование контейнера map c++

Что такое контейнер map в С++ и когда необходимо его использовать

контейнер map, map c++, ассоциативный массив, контейнер map, ассоциативный контейнер, пример работы с map с+

При использовании массива строк в C++, каждой строке ставится в соответствие цифра(индекс массива).
Но, что делать в случае когда требуется установить соответствие между именами и номерами телефонов(задача о хранении телефонного справочника). В этом случае с массивами увы такого не провернешь. И поэтому стоит обратить внимание на контейнер map в c++.

Map в c++, которую также называют ассоциативным массивом, позволяет устанавливать соответствие между двумя элементами любого типа, первый из которых называют ключом(key), а второй значением(value).

Стоит запомнить, что в c++ map все ключи являются уникальными! В случае же если в структуре данных могут находится дублирующие ключи стоит использовать multimap. О multimap поговорим в другой статье.

Простой пример использования map в c++

 

Стоит отметить, что как и другие контейнеры, map в c++ располагает следующими методами: size, begin и end.

Давайте рассмотрим еще один пример. Нижеприведенный код делает часточный подсчет каждого символа в строке и выводит частоту употребления каждого символа. При итерации по map в с++ крайне удобно использовать класс pair (пара) стандартной библиотеки С++, которая предоставляет два публичных поля first и second (first – ключ, second – значение, соответственно).

 

 

Таким образом в нашем случае for_each передает оперирует парами вида pair<char,int> и предоставляет удобный доступ и к ключу и к значению.

Задание для тренировки навыков работы с map в С++

Напишите программу, которая просит юзера ввести имя, либо exit в том случае, если юзер хочет увидеть список всех введенных ранее имен и выйти из программы. Если введенной пользователем имя вводилось ранее, требуется вывести относящийся к данному имени номер телефона, иначе запросить у пользователя ввести номер.
Крохотная подсказка к заданию выше: стоит заиспользовать следующего вида мапу: map<string,string> addressBook, и обратить внимание на методы for_each и find. Успехов!



Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *