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/