array: класс-контейнер массивов фиксированного размера

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>
Внимание!!! Данная статья еще полностью не написана и предоставленная на ней информация является неполной или неправильной. Если есть желание помочь нам с написанием этой или других статей, с нами можно связаться по скайпу или через емэйл.
Автор: Marienko L.
Дата: 16.02.2013
Поделиться:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.