Массивы в STL

Массивы в STLМассивы представляют собой непрерывные области памяти. Контейнер массива представляет собой последовательный контейнер фиксированного размера.

На самом деле, в программировании мы редко используем такой статический контейнер, так как в сценариях реального времени нам нужны контейнеры, которые могут динамически расширяться или сжиматься. Тем не менее, поскольку массив является одним из основных контейнеров, мы начнем обсуждение контейнеров STL с массивов.

В этой статье мы обсудим массивы в целом, а также различные методы, которые можно использовать с контейнерами массивов, и пример использования массивов и их методов в программе.

Общий синтаксис объявления контейнера массива:

array<object_type, size> array_name;

Приведенное выше объявление создает контейнер массива «array_name» с размером «size» и с объектами типа «object_type».

Мы также можем инициализировать этот контейнер массива, как показано ниже:

Array<int,5> myarray = {1,1,2,3,5};

Приведенный выше контейнер массива можно представить графически:

Контейнер массива

Заголовок, который нам нужно включить для контейнера массива, — это <array>.

Контейнер массива поддерживает различные операции, которые можно выполнять для облегчения эффективного обхода элементов контейнера массива и манипулирования ими.

Читать также:  Списки В STL

Вот некоторые из функций, поддерживаемых контейнером массива:

  • At: возвращает значение в контейнере массива в заданной позиции. Исключение Out_of_range выдается, если указанная позиция выходит за пределы массива.
  • Front: возвращает первый элемент в контейнере массива.
  • Back: возвращает последний элемент в контейнере массива, если контейнер полностью заполнен, также возвращает крайний правый элемент в контейнере.
  • Fill: присваивает заданное значение каждому элементу в контейнере массива.
  • Swap: меняет местами содержимое двух массивов с одинаковым индексом типа и размера.
  • Empty: логическая функция для проверки, пуст контейнер массива или нет.
  • Size: возвращает количество элементов в контейнере массива.
  • Max_size: возвращает максимальный размер контейнера массива.
  • Begin: возвращает итератор, указывающий на начало контейнера массива, т.е. на первый элемент массива.
  • End: возвращает итератор, указывающий на расположение рядом с последним элементом в контейнере массива.

Ниже приведено графическое представление массива нечетных чисел размером 5:

Массив нечетных чисел

Как показано выше, функция begin() контейнера массива возвращает значение, указывающее на начало массива, т.е. на первый элемент массива.

Функция End() возвращает значение, указывающее на конец массива. Это не обязательно может быть последний элемент в массиве. Как показано выше, хотя размер массива равен 5, присутствуют только 4 элемента.

Читать также:  Рекурсия в С++

Помимо вышеперечисленных операций, контейнер массива также поддерживает следующие операторы:

  • []: этот оператор похож на оператор at и может использоваться так же, как и для простых массивов.
  • Операторы – == , != , > , < , >= , <= : все эти операторы используются для лексикографического сравнения значений контейнера массива.

Кроме того, мы также можем использовать уже обсуждавшиеся алгоритмы, такие как сортировка, реверс и т.д., с контейнерами массивов.

Далее мы покажем использование описанных выше операций над контейнером массива с помощью программы:

Вывод данных:

Size of array: 5
myarray contents: 1 1 2 3 5
sorted myarray: 1 1 2 3 5
The first element of myarray 1
FRONT myarray: 1
BACK myarray: 5
Filled myarray: 8 8 8 8 8

Вот что выдает программа: размер массива: 5, содержимое myarray : 1 1 2 3 5, отсортировано myarray: 1 1 2 3 5, первый элемент myarray 1, FRONT myarray: 1, BACK myarray: 5, получается заполненный массив: 8 8 8 8 8 .

В приведенной выше программе показаны различные операции, поддерживаемые контейнером массива.

Итог

В этой статье мы показали, как функция сортировки используется в контейнере массива. Все функции говорят сами за себя и демонстрируют, как эти операции можно использовать для эффективного программирования контейнера массива.

Читать также:  Пространства имен в С++

В нашей следующей статье мы поговорим о роли векторов в STL, и приведем соответствующие примеры.

С Уважением, МониторБанк

Добавить комментарий