Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
1-1098792537
Tormoz
2004-10-26 16:08
2004.11.21
Макрос из MSWord


1-1099738462
Lamer v0.000001
2004-11-06 13:54
2004.11.21
TCombobox


4-1097657167
OPEN_ALWAYS
2004-10-13 12:46
2004.11.21
CreateFile c OPEN_ALWAYS - Почему каждый раз


1-1098723648
фантазер
2004-10-25 21:00
2004.11.21
TFileFormatsList


14-1099839594
Vlad Oshin
2004-11-07 17:59
2004.11.21
Лучше. Рассказ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский