Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как склеить динамические массивы ? Как вырекзать элемнт из него ? [D5, D7, Win95/98, WinXP]


Cheburek ©   (2004-11-10 15:25:00) 

Очередная проблема, господа.
Как склеить два динамических массива ?
Или удалить элемент из массива?
Надо что бы всё было аккуратно и быстро.


KilkennyCat   (2004-11-10 21:12:00) [1]


> lipskiy ©   (10.11.04 21:01) [15]

думаю, это применительно к частным случаям только.


lipskiy   (2004-11-10 21:01:00) [2]

А я вместо динамических массивов стараюсь использовать TStringList! Изврат, но работает несравнимо быстрее! Даже с учетом конвертации в string и из string. И удаляй, и приклеивай, и отрезай, и сортируй, и что хош делай, и быстро. Вот так.


SergP   (2004-11-10 20:08:00) [3]


> Как склеить два динамических массива ?


Сначала Setlength, затем Move


> Или удалить элемент из массива?


Сначала Move, затем Setlength


KilkennyCat   (2004-11-10 19:56:00) [4]

есть метод псевдосклеивания. Ничего не склеивается, просто продумывается работа с обеими массивами.


Fay   (2004-11-10 19:53:00) [5]

>> весь массив переписывается на новое место
Не всегда.


begin...end   (2004-11-10 19:49:00) [6]

Torin   (10.11.04 19:41) [10]

> Дин. массивы использовать для больших структур данных
> действительно довольно накладно, ведь при увеличении
> размера массива хотя бы на 1 весь массив
> переписывается на новое место :-(.

Откуда дровишки?


Torin   (2004-11-10 19:41:00) [7]

Дин. массивы использовать для больших структур данных действительно довольно накладно, ведь при увеличении размера массива хотя бы на 1 весь массив переписывается на новое место :-(. Незнаю уж что там говорят, но для моих задач обычно хватало скорости поэлементной работы (правда для структур я дин. массивы не успользую тока для указателей на структуры).


ninja   (2004-11-10 19:07:00) [8]

а какие могут быть осложнения?


ghg   (2004-11-10 18:26:00) [9]

дык вопрос про стандартные дин.массивы
а если самому все разгребать тогда конечно CopyMem


panov   (2004-11-10 18:26:00) [10]

>ninja ©   (10.11.04 17:57) [6]
Ну тады CopyMem наверное!

И нет сомнений, что скопировано будет всё правильно?


ninja   (2004-11-10 17:57:00) [11]


> ghg ©   (10.11.04 17:39) [5]
> >Torin   (10.11.04 16:39) [3]
> то бишь поэлементно
> но это говорят не очень быстро


Ну тады CopyMem наверное!


ghg   (2004-11-10 17:39:00) [12]

>Torin   (10.11.04 16:39) [3]
то бишь поэлементно
но это говорят не очень быстро


Torin   (2004-11-10 16:43:00) [13]

Да ещё в первом случае Размер_Массива_1  получается до описаного участка кода хранится в некой переменной и не меняется.


Torin   (2004-11-10 16:39:00) [14]

Приклеить Массив_2 в конец Массив_1

SetLength(Массив_1,Размер_Массива_1 + Размер_Массива_2);
for i := Размер_Массива_1 to Размер_Массива_2 + Размер_Массива_1 - 1 do
Массив_1[i] := Массив_2[i - Размер_Массива_1];

Удалить элемент из массива:

for i := Индекс_Удаляемого_Элемента to Размер_Массива_1 - 2 do
Массив_1[i] := Массив_1[i + 1];
SetLength(Массив_1,Размер_Массива_1 - 1);


ghg   (2004-11-10 16:13:00) [15]

одно из двух
либо аккуратно, либо быстро

а в общем случае тока поэлементно


Amoeba   (2004-11-10 15:45:00) [16]

А если все-таки хорошо подумать собственной головой? Задача ведь элементарная.


Наверх

Титульная страница Поиск, карта сайта Написать письмо