printSTL

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

set – это ассоциативный контейнер, который поддерживает уникальные ключи (не содержит ключи с одинаковыми значениями) и обеспечивает быстрый поиск ключей
set<int> s;
s.insert(5); // добавить значение
s.erase(5); // удалить значение
s.erase(s.begin()); // удалить первый
if(s.find(5)!=s.end()) // значение найдено
multiset допускает множественные копии того же самого значения ключа, для нахождения границ можно использовать s.upper_bound(5) и s.lower_bound(5)
map – ассоциативный контейнер, который поддерживает уникальные ключи и обеспечивает быстрый поиск значений другого типа T, связанных с ключами. Итератор в случае map является «указателем» на pair<const Kлюч,Значение>
map<int,string> m;
m[5]="текст"; // доступ по ключу
m.insert(make_pair(5,string("текст")); // добавить значение
m.erase(5); // удалить значение
m.erase(m.begin()); // удалить первый
if(m.find(5)!=m.end()) // значение найдено
multimар допускает множественные копии того же самого значения ключа, для нахождения границ можно использовать m.upper_bound(5) и m.lower_bound(5)
Классы unordered_set, unordered_multiset, unordered_map, unordered_multimap позволяют создать ассоциативные массивы и множества с временем работы меньше чем `O(log(N))` за счет использования большего количества памяти и хороших хэш-функций. Можно применять аналогичные методы insert, find, erase, но при обходе контейнера с помощью итератора порядок обработки элементов является неопределенным. Для нестандартных типов в аргументах шаблона указывается класс-функционал, метод () которого возвращает хэш для ключа.
loading