Повторение: статические массивы
Статический массив имеет фиксированное количество ячеек:
Заранее указать достаточное количество ячеек — невозможно, если размер данных неизвестен.
Проблема: если нужный размер неизвестен заранее
Что делать, если количество данных неизвестно? Создать массив на 5000 ячеек, чтобы «точно хватило»?
Это плохое решение:
- Кому-то понадобится ещё больше — и программу придётся переписывать.
- Кому-то хватит и 100 ячеек — но тогда 4900 ячеек будут пустовать, тратя оперативную память без пользы.
Вывод: нужен массив, у которого количество ячеек можно изменять во время выполнения программы.
Динамический массив
В Idyllium такой массив существует — он называется dyn_array (от англ. dynamic array):
Разберём:
dyn_array— тип «динамический массив»;<int>— тип данных в ячейках;nums— имя массива;[11, 22, 33]— начальные ячейки (можно и без них).
В отличие от array, длина такого массива не фиксирована.
Добавление ячеек: метод add()
Метод add(значение) добавляет новую ячейку в конец массива с указанным значением.
Динамические массивы с любыми типами
dyn_array работает не только с числами, но и со строками, символами и даже логическими значениями.
Как видите, принцип работы одинаков для любого типа данных — просто укажите нужный тип в угловых скобках: dyn_array<string>, dyn_array<float>, dyn_array<char> или даже dyn_array<bool>.
Удаление ячейки: метод remove_at()
Ячейка с индексом 2 удаляется, а все последующие сдвигаются на одну позицию влево.
Текущая длина: метод length()
Перебор динамического массива
Как и статический, динамический массив можно перебирать циклом — при этом число итераций определяется его текущей длиной:
Цикл адаптируется автоматически — сколько ячеек, столько и итераций.
Изменение размера: метод resize()
Метод resize(N) устанавливает новую длину массива — N ячеек:
Если resize() увеличивает массив — новые ячейки заполняются дефолтными значениями (для int — это 0).
Если resize() уменьшает массив — лишние ячейки безвозвратно удаляются.