Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: 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 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.494 c
14-1099260053
Lancelot
2004-11-01 01:00
2004.11.21
Посоветуйте 3D-шутер,


6-1094609909
OlegM
2004-09-08 06:18
2004.11.21
Как узнать что в сети уже активен TUDPServer?


14-1099134267
DiamondShark
2004-10-30 15:04
2004.11.21
Даже Word их не любит...


1-1099910426
Змей
2004-11-08 13:40
2004.11.21
Манифест


3-1098349942
Blacksun
2004-10-21 13:12
2004.11.21
Помогите!!! Timeout expired при вызове StoredProc