![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как склеить динамические массивы ? Как вырекзать элемнт из него ? [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]А если все-таки хорошо подумать собственной головой? Задача ведь элементарная.