OberonCore https://forum.oberoncore.ru/ |
|
аналог new ArrayList() (.NET) https://forum.oberoncore.ru/viewtopic.php?f=29&t=2410 |
Страница 1 из 1 |
Автор: | Роман М. [ Вторник, 02 Март, 2010 02:14 ] |
Заголовок сообщения: | аналог new ArrayList() (.NET) |
Есть примерно такой код в C#: Код: ArrayList a = new ArrayList(); aItem = new Item(); ... a.Add(aItem); Причём, Цитата: ArrayList – неоднородный массив переменного размера Насколько я понимаю, готовых структур данных наподобие этого нет. Или же есть? |
Автор: | AVC [ Вторник, 02 Март, 2010 02:57 ] |
Заголовок сообщения: | Re: аналог new ArrayList() (.NET) |
Роман М. писал(а): Насколько я понимаю, готовых структур данных наподобие этого нет. Или же есть? Особенность в том, что массив можеть менять размер? Тогда такой готовой структуры данных в КП нет. Но можно реализовать самостоятельно. Примерно так: Код: CONST size0 = 16; TYPE ArrayList* = POINTER TO RECORD size-: INTEGER; p-: POINTER TO ARRAY OF Item END; PROCEDURE NewArrayList* () : ArrayList ; VAR alist: ArrayList; BEGIN NEW(alist); NEW(alist.p, size0); alist.size := 0; RETURN alist END NewArrayList; PROCEDURE (a: ArrayList) Add* (x: Item) , NEW ; VAR p: POINTER TO ARRAY OF Item; i: INTEGER; BEGIN IF a.size = LEN(a.p^) THEN NEW(p, 2*a.size); FOR i := 0 TO a.size-1 DO p[i] := a.p[i] END; a.p := p END; a.p[a.size] := x; INC(a.size) END Add; Правда, доступ к массиву надо будет либо осуществлять через процедуры, либо открыть доступ к массиву (как в этом примере: если меняется значение уже существующего элемента, можно написать a.p[i] := x). |
Автор: | Axcel [ Вторник, 02 Март, 2010 10:11 ] |
Заголовок сообщения: | Re: аналог new ArrayList() (.NET) |
Роман М. писал(а): Есть примерно такой код в C#: Код: ArrayList a = new ArrayList(); aItem = new Item(); ... a.Add(aItem); Причём, Цитата: ArrayList – неоднородный массив переменного размера Насколько я понимаю, готовых структур данных наподобие этого нет. Или же есть? Реализация массивов с подвижной границей есть в библиотеке Mt (на сайте Метасистем). Но судя по виду у Вас не массив, а индексированный список. Подобная реализация есть в библиотеке O3 (интернет сервер на Обероне http://www.o3-software.de/en/Download.xhtml). Стандартного действительно нет. |
Автор: | Евгений Темиргалеев [ Четверг, 04 Март, 2010 16:31 ] |
Заголовок сообщения: | Re: аналог new ArrayList() (.NET) |
Обсуждение способов копирования выделено: viewtopic.php?f=27&t=2417 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |