Найти в Дзене

Массив

Согласно справочнику по языку C++, массив - это последовательность объектов того же типа, которые занимают непрерывную область в памяти.

И на этом следует остановиться и разобрать пословно данное определение. В нем сказано, что массив является последовательностью объектов того же типа, значит что каждый элемент последовательности по своему типу является идентичным друг другу, то есть если это целочисленный тип данных, то каждый элемент массива является целым числом. Во второй части определения описан принцип заполнения памяти массивом и это очень важное уточнение, в дальнейшем при рассмотрении связанного списка можно увидеть важное отличие простого массива от списка. Каждый элемент массива в памяти располагается последовательно. На рисунке ниже в качестве квадратов выступают блоки в памяти, массив последовательно занимает блоки в памяти, что может вызвать проблемы. Одна из таких проблем это невозможность выделения места нужной длинны под массив, в один момент может просто не оказаться последовательно пустых блоков размера длинны массива. Также следует отметить что такого рода массив является массивом с фиксированной длинной.

Абстрактный пример выделения памяти под массив.
Абстрактный пример выделения памяти под массив.

Объявление массива происходит следующим образом:

int a[4] = {1, 2, 3, 4};

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

Данное объявление является традиционным объявлением массива в стиле C. В современном C++ есть аналог классического массива std::array, который рекомендуют использовать во избежание ошибок.

Для использования std::array требуется прописать соответствующую директиву:

#include <array>

Объявление массива происходит следующим образом:

std::array<int, 4> arr;

В данном случае объявляется массив arr длинной в 4 элемент и типом данных int.

Использование std::array позволяет использовать новые функции класса std::array, с которыми можно ознакомиться в статье.