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> |