Что такое контейнеры STL в C++

Cto Takoe Kontejnery Stl V C



В 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++, которые последовательные контейнеры, ассоциативные контейнеры а также неупорядоченные ассоциативные контейнеры .