map (C++) (map (C++))

Перейти к навигации Перейти к поиску

Стандартная библиотека языка программирования C++

Ввод-вывод:

Многопоточность:

  • atomic (C++11)
  • condition_variable (C++11)
  • future (C++11)
  • mutex (C++11)
  • shared_mutex (C++14)
  • thread (C++11)

Прочие:

  • algorithm
  • bitset
  • chrono (C++11)
  • codecvt (C++11)
  • complex
  • exception
  • functional
  • initializer_list (C++11)
  • iterator
  • limits
  • locale
  • memory
  • new
  • numeric
  • random (C++11)
  • ratio (C++11)
  • regex (C++11)
  • stdexcept
  • string
  • system_error (C++11)
  • tuple (C++11)
  • typeindex (C++11)
  • typeinfo
  • type_traits (C++11)
  • utility
  • valarray
Стандартная библиотека шаблонов

Последовательные контейнеры:

Ассоциативные контейнеры:

Контейнеры-адаптеры:

Стандартная библиотека языка программирования Си

map — стандартный шаблонный класс библиотеки языка программирования C++, предназначенный для реализации абстракции отображения в виде упорядоченного ассоциативного контейнера. Его объявление расположено в пространстве имён std заголовочного файла <map> библиотеки STL[1][2][3]. В контексте доступа к своим элементам класс map рассматривается как ассоциативный массив, в котором роль индексов играют значения ключей[4], что позволяет провести аналогию со словарём или телефонной книгой[5].

Элементами класса map являются пары из ключей и соответствующих им значений. Хранение элементов класса map реализовано в упорядоченном виде на основании критерия сортировки, который применяется по значениям ключей. По умолчанию критерий сортировки задаётся оператором operator< [6]. В отличие от контейнера set класс map предоставляет своему пользователю operator [][1]. Для контроля за управлением памятью возможно подключать пользовательские версии распределителей памяти. Для практической реализации класса map обычно используются деревья двоичного поиска[7].

Базовая функциональность

[править | править код]

Стандартные методы класса map дают возможность пользователю осуществлять операции поиска, вставки и обхода контейнера унифицированным образом. Для многих из них предусмотрено взаимодействие со штатными итераторами библиотеки STL[8].

Благодаря упорядоченной структуре контейнера map операции поиска или внесения нужного элемента могут быть выполнены за логарифмическое время [9].

Название Функции
size() Возвращает количество элементов в контейнере
empty() Возвращает true если контейнер пуст
find(k) Возвращает итератор, указывающий на значение, соответствующее значению ключа k. Если такого значения в контейнере нет, то возвращается итератор end
operator[k] Возвращает ссылку на значение, соответствующее ключу k. Если такого ключа не существует, то он создаётся.
insert(pair(k,v)) Вставляет в контейнер пару (k,v), возвращая адрес его позиции
erase(k) Удаляет из контейнера элемент с ключом k
erase(p) Удаляет из контейнера элемент, на который указывает итератор p
begin() Возвращает итератор на начало контейнера
end() Возвращает итератор на конец контейнера

Примечания

[править | править код]
  1. 1 2 Gregorie, 2018, map and multimap, p. 518.
  2. Van Weert, Gregorie, 2016, Ordered Associative Containers, p. 71.
  3. Goodrich, Tamassia, Mount, 2011, The STL map Class, p. 372.
  4. Литвиненко, 2005, Контейнеры Map, Multimap, с. 198.
  5. Horton, Van Weert, 2018, Maps, p. 730.
  6. Литвиненко, 2005, Контейнеры Map, Multimap, с. 195.
  7. Class template std:map Архивная копия от 30 января 2020 на Wayback Machine www.cplusplus.com
  8. Goodrich, Tamassia, Mount, 2011, The STL map Class, p. 372, 373.
  9. Posch, Galowicz, 2018, Knowing the new insertion hint semantics of std::map:insert, p. 524.