OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 18 Июнь, 2021 06:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: аналог new ArrayList() (.NET)
СообщениеДобавлено: Вторник, 02 Март, 2010 02:14 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Tel-Aviv
Есть примерно такой код в C#:
Код:
ArrayList a = new ArrayList();

aItem = new Item();
...
a.Add(aItem);

Причём,
Цитата:
ArrayList – неоднородный массив переменного размера

Насколько я понимаю, готовых структур данных наподобие этого нет. Или же есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: аналог new ArrayList() (.NET)
СообщениеДобавлено: Вторник, 02 Март, 2010 02:57 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Роман М. писал(а):
Насколько я понимаю, готовых структур данных наподобие этого нет. Или же есть?

Особенность в том, что массив можеть менять размер?
Тогда такой готовой структуры данных в КП нет.
Но можно реализовать самостоятельно. Примерно так:
Код:
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).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: аналог new ArrayList() (.NET)
СообщениеДобавлено: Вторник, 02 Март, 2010 10:11 

Зарегистрирован: Понедельник, 05 Июнь, 2006 09:49
Сообщения: 327
Откуда: Ленинград, Емельянов Алексей Николаевич
Роман М. писал(а):
Есть примерно такой код в C#:
Код:
ArrayList a = new ArrayList();

aItem = new Item();
...
a.Add(aItem);

Причём,
Цитата:
ArrayList – неоднородный массив переменного размера

Насколько я понимаю, готовых структур данных наподобие этого нет. Или же есть?

Реализация массивов с подвижной границей есть в библиотеке Mt (на сайте Метасистем).
Но судя по виду у Вас не массив, а индексированный список. Подобная реализация есть в библиотеке O3 (интернет сервер на Обероне http://www.o3-software.de/en/Download.xhtml). Стандартного действительно нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: аналог new ArrayList() (.NET)
СообщениеДобавлено: Четверг, 04 Март, 2010 16:31 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4619
Откуда: Россия, Орёл
Обсуждение способов копирования выделено: viewtopic.php?f=27&t=2417


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2021, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB