AviDen
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Данную тему решил создать для поиска истины | Бггг, года идут, а люди не меняются. Всё ищут истину в одном и том же сарае с граблями. Нет ничего абсолютно правильного. Всё зависит от конкретного случая. Навскидку могу указать основные плюсы и минусы списков и массивов: TList/TStringList/etc: + имеются в наличии все необходимые методы по вставке/поиску/удалению/сортировке записей (поиск/сортировка - только в TStringList) + минимизация операций по выделению/освобождению памяти как для основного списка (наращивание количества эл-тов происходит путем удвоения), так и для связанных объектов (т.к. мы вынуждены хранить все доп. данные отдельно и в списке храним лишь указатели на них, то эти данные остаются в неприкосновенности при работе со списком, что экономит время) - невозможность прямого доступа к элементам масссива (необходимость разыменовывать указатели и приводить их к соотв. типу, что удлиняет код / затрудняет чтение) - память под доп. данные для элементов необходимо выделять (и освобождать) вручную Динамические массивы: + возможность хранения типизированных данных в массиве, простота доступа к ним + быстрота реализации, если работа с массивом не предполагает полного набора операций (напр., удаление/перемещение эл-тов) + является типом данных с автоматическим выделением /освобождением памяти, т.е., не требуют обязательной ручной финализации (считайте, что они идут со своим собств. "сборщиком мусора") - избыточность операций по выделению/освобождению памяти при изменении кол-ва элементов массива/изменению их порядка, а также необходимость их реализации вручную P.S. Цитата: Я предполагаю что в любом случае необходимо пользоваться ОБЪЕКТАМИ во всех задачах, где можно обойтись только ими. | Ещё один бестолковый принцип, исповедуемый только лишь потому, что так учил строгий препод в школе/институте/университете или так написал умный дядька в книжке. Пользоваться необходимо тем, что удобнее / оптимальнее в конкретном случае. Иногда это стандартные объекты, а иногда и до низкоуровнего inline-asm'а приходится спускаться. |