template < class T, size_t N > class array;
Объекты типа array представляют из себя массивы фиксированного размера: они имеют определенное количество элементов, которые идут друг за другом, в строгой линейной последовательности, как у обычных массивов в С++. В рамках данной статьи вместо объекта типа array, буду говорить — массив, но имею ввиду необычный массив С++, а, именно, экземпляр класса array.
Внутри объекта array хранятся только его элементы, никаких других данных объект array не хранит (даже свой размер, который является параметром шаблона. Это связано с эффективным использованием памяти, объект array не должен занимать больше памяти, чем обычный массив. Этот класс просто добавляет свой член и глобальными функциями, так что массивы могут быть использованы в качестве стандартных контейнеров.
В отличие от других стандартных контейнеров, контейнер array имеет фиксированный размер и не позволяет управлять распределением памяти под свои элементы через allocator. Экземпляр класса-контейнера array представляет собой — массив элементов фиксированного размера, таким образом, размер массива не может быть изменен динамически (см. vector — на аналогичный контейнер, размер которого может изменяться динамически).
Нулевой размер экземпляра array является действительным и не будет считаться ошибкой, но такой массив не может быть разименован(методы front, back, data).
Все элементы класса-контейнера array расположены в строгой линейной последовательности, друг за другом. Отдельные элементы доступны в своих позициях в этой последовательности. Элементы массива хранятся в смежных ячейках памяти, что позволяет в любой момент времени получить доступ к любому элементу. используя указатели и смещение относительно текущего элемента, можно получить доступ к другим элементам массива.
Контейнер array использует неявный конструктор для выделения необходимой, статической области в памяти. Размер этой области является константным значением времени компиляции.
Параметры
- T
Тип данных элементов содержащихся в контейнере. - N
Размер контейнера, количество элементов массива.
Эти параметры используются в качестве параметров шаблона контейнера array при создании экземпляра класса.
Ниже представлена таблица имен, которые дополнительно были определены в заголовочном файле array, в качестве псевдонимов типам данных шаблона класса.
| Название | Описание |
|---|---|
| value_type | Первый параметр шаблона — Т. |
| pointer | Указатель на первый параметр шаблона (value_type*). |
| const_pointer | Константный указатель (const value_type*). |
| reference | Ссылка (value_type&). |
| const_reference | Константная ссылка (const value_reference*). |
| iterator | Итератор произвольного доступа к элементам типа value_type. |
| const_iterator | Итератор произвольного доступа к элементам типа const value_type. |
| size_type | Беззнаковый целый тип данных size_t. |
| difference_type | Знаковый целый тип данных ptrdiff_t. |
| reverse_iterator | Обратный итератор, класс reverse_iterator из заголовочного файла <iterator>. |
| const_reverse_iterator | Константный обратный итератор. |
Элемент-функции класса-контейнера array.
| Итераторы | |
|---|---|
| begin | |
| end | |
| rbegin | |
| rend | |
| cbegin | |
| cend | |
| crbegin | |
| crend | |
| Размер | |
| size | |
| max_size | |
| empty | |
| Доступ к элементам | |
| operator[] | |
| at | |
| front | |
| back | |
| data | |
| Изменение | |
| fill | |
| swap | |
Перегруженные функции
| get | |
| операторы отношения |
Специальные классы
| tuple_element<array> | |
| tuple_size<array> |