Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Можно как-то уменьшить размер массива не создавая новый?

Сразу скажу, я нубяра, кое-как вспоминаю основы шарп. Задача - из набора чисел занести только НЕКОТОРЫЕ в массив, но при этом заведомо не зная сколько их будет занесено, зная только сколько всего чисел будет изначально. Я делал так - создавал массив размером с общее количество значений, куда фильтровал нужные (циклом for), параллельно создавая счётчик, сколько чисел отфильтровалось. Получался массив с нужными данными и 0 на пустых местах. После чего создавал новый массив размером со значение этого счётчика, и вносил туда данные из первого, которые !=0 (отфильтрованные числа никогда не 0), получался массив какой надо, без нулей. Всё работает, но мне не нравится это решение, ибо приходится создавать отдельный массив, куда по сути дублируются данные, то есть это коряво и не оптимально с точки зрения использования памяти. Может можно как-то ужать уже известный массив, удалив пустые ячейки из него вообще? Пробовал создавать безразмерный, надеясь, что он в цикле при фильтрации сам заполнится на нужный размер, но С# сказал, что я ох_л и он так не играет. Ну, или я что-то не понял.

По дате
По рейтингу
Аватар пользователя
Мудрец

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

Аватар пользователя
Мыслитель