Типы последовательных контейнеров в C++ | OTUS

Типы последовательных контейнеров в C++

В стандартной библиотеке C++ для управления наборами объектов существуют контейнеры. Таким образом, можно сказать, что контейнер -- это коллекция объектов определенного типа. Если же мы говорим о последовательном контейнере (sequential container), то он дает возможность контролировать порядок, в котором существующие элементы располагаются в коллекции, причем не только контролировать, но и управлять доступом к данным элементам.

20150321215415_1-1801-1babee.jpg

Рассмотрим типы последовательных контейнеров:

  1. vector. Это массив переменного размера, поддерживающий произвольный доступ к любому элементу контейнера. Существует возможность добавлять и удалять элементы из любого места контейнера.
  2. deque. Представляет собой двустороннюю очередь, поддерживает доступ к любому элементу контейнера. Существует возможность добавлять и удалять элементы в начале и конце.
  3. list. Это двусвязный список, который поддерживает лишь последовательный 2-направленный доступ к элементам. Можно добавлять и удалять элементы в начале и конце контейнера.
  4. forward_list. Представляет собой односвязный список, который поддерживает лишь последовательный однонаправленный доступ к элементам контейнера. Удалять элементы можно в начале и конце.
  5. array. Это уже массив фиксированного размера, поддерживающий произвольный доступ фактически к любому элементу контейнера, однако в данном случае удалять/добавлять элементы нельзя.
  6. string. Этот контейнер аналогичен вектору, состоящему из символов, то есть речь идет о строке.

Итак, стандартная библиотека C++ по дефолту включает в себя ряд контейнеров, представляющих определенные структуры данных. При этом все они имеют и общие, и специфические возможности. Также кроме класса array они все поддерживают добавление/удаление элементов. Главное отличие лишь в том, каким образом это добавление/удаление обеспечивается, а также как происходит доступ к существующим элементам. Соответственно, контейнер подбирается с учетом конкретной ситуации и потребностей.

Чтобы воспользоваться каким-нибудь контейнером, необходимо добавить в программу соответствующий заголовочный файл, который принято называть именем класса контейнера.

Также в момент определения переменной контейнера надо установить ограничение на тип элементов, которые будут в этот контейнер включены. Тип элементов следует передавать в угловых скобках. Ниже пример с определением переменной класса vector, которая сохраняет числовые данные int-типа:

1-1801-e22c91.png

Остается добавить, что в случае компиляции программы, использующей контейнеры, посредством компилятора g++, может возникнуть необходимость в указании флага -static:

2-1801-66f638.png

По материалам https://metanit.com/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто