Контейнеры библиотеки STL
Теперь, когда
вы вспомнили, что такое шаблоны функций и шаблоны классов, мы можем исследовать
возможности стандартной библиотеки шаблонов STL. В июле 1994 года специальный
комитет Международной организации по принятию стандартов (ANSI/ISO C++) проголосовал
за то, чтобы принять STL в качестве части стандарта языка C++. Предложение было
основано на исследовании обобщенного (generic) программирования и концепции
библиотеки (generic software library), которое проводили Alex Stepanov, Meng
Lee и David Musser. Главной целью при разработке библиотеки было достижение
общности (generality) подхода к различным структурам данных и алгоритмам их
обработки без ущерба эффективности кода.
В STL определены
два типа контейнеров — последовательности (sequence containers) и ассоциативные
контейнеры. Все контейнеры предназначены для хранения данных любого типа. Последовательности
предполагают последовательный доступ к своим элементам, а ассоциативные контейнеры
работают по принципу ассоциации ключа (key) с его значением (value). Можно считать,
что ассоциативные контейнеры хранят пары произвольных элементов и производят
поиск по ключу, используя технику hash-таблиц. В STL существует три типа последовательных
контейнеров: vector, deque И list.