Вниз
Скачать: 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.022 c
4-1097491005
rainy_2002'
2004-10-11 14:36
2004.11.21
Как получить информацию о пользователе?


4-1097262733
Dot
2004-10-08 23:12
2004.11.21
Как заменить ресурс?


4-1096852354
Dvm_home
2004-10-04 05:12
2004.11.21
ListBox


4-1097643929
atom
2004-10-13 09:05
2004.11.21
запуск программы от имени другого пользователя


1-1099577292
tchn
2004-11-04 17:08
2004.11.21
динамически создать компонент?




   Наверх