Вниз
Скачать: CL | DM;

Как склеить динамические массивы ? Как вырекзать элемнт из него ?   Найти похожие ветки 

 
Cheburek   (2004-11-10 15:25) [0]

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


 
Amoeba ©   (2004-11-10 15:45) [1]

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


 
ghg ©   (2004-11-10 16:13) [2]

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

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


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

Приклеить Массив_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);


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

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


 
ghg ©   (2004-11-10 17:39) [5]

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


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


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


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


 
ghg ©   (2004-11-10 18:26) [7]

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


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

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

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


 
ninja ©   (2004-11-10 19:07) [9]

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


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

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


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

Torin   (10.11.04 19:41) [10]

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

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


 
Fay ©   (2004-11-10 19:53) [12]

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


 
KilkennyCat ©   (2004-11-10 19:56) [13]

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


 
SergP ©   (2004-11-10 20:08) [14]


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


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


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


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


 
lipskiy ©   (2004-11-10 21:01) [15]

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


 
KilkennyCat ©   (2004-11-10 21:12) [16]


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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.04 c
8-1093546062
Kind
2004-08-26 22:47
2004.11.21
Скорость InvalidateRect


14-1099604866
Knight
2004-11-05 00:47
2004.11.21
Подскажите с Access ом... плз


1-1099552404
Владимир
2004-11-04 10:13
2004.11.21
OLE Contener


8-1093057941
race1
2004-08-21 07:12
2004.11.21
oldest directx


14-1099353829
ДЫМ
2004-11-02 03:03
2004.11.21
Какой installer посоветуете?




   Наверх