Решено: Как создать динамический массив.

Приветствую всех, сегодня затронем интересную тему создания динамического массива. У начинающих программистов, студентов, рано или поздно при работе с массивами возникает вопрос, как увеличить, изменить динамически массив, не зная его первоначально размера. С коллекциями типа List, который расширяется по мере добавления элементов, очень удобно работать, однако иногда и требуется провернуть подобное и с обычными массивами. Да и много заданий часто я встречал по основам программирования, где требовалось динамически расширять массив. На форумах и в группах то же встречаю подобные вопросы.  Я знаю три примера которые позволяют расширять массив. Начнем с примера которым пользовались еще 15 лет назад когда не было коллекций и расширяющих методов массивов.

В этом примере мы создали метод Expansion который принимает массив по ссылке и число, на которое необходимо увеличить массив.  По сути в примере выше мы создаем копию массива увеличивая ее на заданное число, которое передается в метод. И возвращает увеличенный массив, который мы увеличиваем в методе Expansion. Именно подобным способом увеличивали динамически массив очень давно. Но время идет и уже не нужно изобретать велосипед, все придумали за нас. В примере ниже мы расширяем массив, однако с помощью метода Resize который присутствует в классе Array.

По сути он все делает то же самое, однако, он более универсален, так как может принимать массив с любым типом. Но я не стал усложнять пример выше, для простоты понимания я использовал в своем методе Expansion тип int, при желании можно усовершенствовать мой метод.

Еще один вариант использовать коллекции, но лучше этого не делать, при работе больших данных, производительность сильно снижается, однако для примера я все же его приведу.

Думаю и тут все очевидно, мы добавили в коллекцию цифры 6,7 тем самым расширив ее и сделали копию уже в существующий массив, заменив его содержимое и увеличив в размере. Таким образом он принял все значения что и коллекция.

Обновлено: 23.03.2018 — 23:11

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.