В C++, STL (стандартная библиотека шаблонов), контейнеры объекты, используемые для хранения коллекций других объектов. Они работают аналогично шаблонам классов и поддерживают большое количество типов элементов и предоставляют функции-члены для доступа к своим элементам напрямую или через итераторы.
Типы контейнеров C++ STL
В C++ существует три типа STL. контейнеры , которые перечислены ниже:
1: последовательные контейнеры
В C++ последовательные контейнеры позволяют хранить элементы, которые можно извлекать последовательно. Эти контейнеры кодируются как массивы или связанные списки структур данных. Некоторые типы последовательных контейнеров приведены ниже.
- Вектор: Это массив динамического размера, который хранится в памяти непрерывно.
- О чем: Он представляет собой двустороннюю очередь, которая поддерживает операции как для вставки, так и для удаления.
- Множество: Это статический массив, выделяемый во время компиляции, при этом его размер остается фиксированным.
- Список: Это двусвязный список, который выполняет быструю вставку и удаление элементов в любом месте списка.
- Передовой список: Это односвязный список, как и список, но вы можете перемещаться по нему только в одном направлении.
Пример
В этом примере мы будем использовать векторный класс показать, как последовательный контейнер действует.
#include <иопоток>
#include <вектор>
использование пространства имен std;
внутренний основной ( ) {
// инициализировать вектор int тип
вектор < инт > числа = { 10 , 2 , 16 , 70 , 5 } ;
// распечатать вектор
cout << 'Цифры такие:' ;
для ( авто & я: числа )
{
cout << я << ', ' ;
}
возвращаться 0 ;
}
Приведенный выше код демонстрирует использование последовательный контейнеры в векторном формате, что позволяет хранить целочисленные массивы. Программа инициализирует вектор типа integer, присваивает ему значения и печатает их с помощью цикла. В этом примере показано, как легко хранить данные и обращаться к ним в C++ с помощью последовательный контейнер .
2: Ассоциативные контейнеры
Ассоциативные контейнеры позволяют нам хранить элементы в определенном порядке, определяемом оператором сравнения. В отличие от последовательные контейнеры , порядок элементов в ассоциативные контейнеры поддерживается с помощью ключей, которые позволяют пользователям организовывать и получать доступ к элементам. Когда элемент вставляется в ассоциативный контейнер , он автоматически сортируется в правильной позиции на основе его ключа. Эти типы контейнеров реализованы внутри, как структуры данных двоичного дерева.
ассоциативный контейнеры классифицируются как:
- Карта: набор пар ключ-значение, отсортированных с использованием уникальных ключей
- Мультикарта: набор пар ключ-значение, отсортированных по ключам
- Набор: Уникальные ключи, собранные и упорядоченные по ключам.
- Мультисет: набор ключей, которые были отсортированы с помощью ключей
Пример
Чтобы проиллюстрировать, как ассоциативный контейнер работает, мы будем использовать установить класс в этом примере.
#include <иопоток>#включить <набор>
использование пространства имен std;
внутренний основной ( )
{
// инициализировать набор внутр. тип
набор < инт > числа = { 10 , 2 , 16 , 70 , 5 } ;
// распечатать набор
cout << 'Цифры такие:' ;
для ( авто & я: числа )
{
cout << я << ', ' ;
}
возвращаться 0 ;
}
Приведенный выше код инициализирует набор целых чисел в C++, который является примером ассоциативного контейнера. Набор обеспечивает сортировку элементов по умолчанию в порядке возрастания. Затем код выводит числа в наборе, используя цикл for.
3: Неупорядоченные ассоциативные контейнеры
В С++, неупорядоченный ассоциативный контейнеры используются для предоставления несортированных версий ассоциативный контейнер . Они внутренне реализованы как структуры данных хэш-таблицы. ассоциативный контейнеры классифицируются как:
- Неупорядоченная карта: набор пар ключ-значение, хешированных с использованием уникальных ключей.
- Неупорядоченная мультикарта: коллекция пар ключ-значение, которая была хеширована с использованием ключей.
- Неупорядоченный набор: набор уникальных ключей, которые были хешированы с использованием ключей.
- Неупорядоченный мультимножество: набор ключей, которые были хешированы с использованием ключей.
Пример
Чтобы проиллюстрировать, как неупорядоченный ассоциативный контейнер работает, мы будем использовать неупорядоченный набор класс в этом примере.
#include <иопоток>#include <неупорядоченный_набор>
использование пространства имен std;
внутренний основной ( )
{
// инициализировать unordered_set из int тип
unordered_set < инт > числа = { 10 , 2 , 16 , 70 , 5 } ;
// распечатать набор
cout << 'Цифры такие:' ;
для ( авто & я: числа )
{
cout << я << ', ' ;
}
возвращаться 0 ;
}
Заключение
STL С++ контейнер является объектом-держателем для хранения коллекции других объектов. Они работают аналогично шаблонам классов и поддерживают большое количество типов элементов. В этом руководстве мы обсудили наиболее часто используемые типы контейнеров STL C++, которые последовательные контейнеры, ассоциативные контейнеры а также неупорядоченные ассоциативные контейнеры .