Контейнеры

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Контейнеры

Сообщение n0th1ng » 30.11.2011 07:03:17

Может это нубский вопрос, но существует ли в freepascal аналог std::list из C++? Ну или хотя бы std::vector? Чтоб можно было добавлять/удалять элементы в список.
n0th1ng
новенький
 
Сообщения: 12
Зарегистрирован: 21.11.2011 09:52:27

Re: Контейнеры

Сообщение Brainenjii » 30.11.2011 07:51:16

TList? TFPGList в fgl - обобщение (шаблон) списка
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Контейнеры

Сообщение n0th1ng » 30.11.2011 08:14:26

OK, спасибо вроде то что искал. Просто в учебнике Мансурова нету этого, там был только связанный список.
А как пробежаться по списку?
n0th1ng
новенький
 
Сообщения: 12
Зарегистрирован: 21.11.2011 09:52:27

Re: Контейнеры

Сообщение Odyssey » 30.11.2011 20:15:21

Ещё для классов, т.е. наследников TObject может быть полезным TFPObjectList или TObjectList из модуля Contnrs. Все предложенные варианты -- это векторы, готовых связанных списков в FPC/Delphi RTL нет. Здесь их используют редко и при необходимости пишут сами. Пробежаться по всем предложенным спискам можно одинаково:
Код: Выделить всё
uses ..., Contnrs;
...
var
  I: Integer;
  List: TFPObjectList;
begin
  List := TObjectList.Create;
  ...
  for I := 0 to List.Count - 1 do
    DoSomething(List[I]);
  FreeAndNil(List);
end;

В новых версиях FPC/Delphi ввели цикл for ... in, поэтому можно ещё попробовать так:
Код: Выделить всё
var
  Item: TObject;
  List: TFPObjectList;
begin
  List := TObjectList.Create;
  ...
  for Item in List do
    DoSomething(Item);
  FreeAndNil(List);
end;
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Контейнеры

Сообщение n0th1ng » 02.12.2011 04:06:33

Спасибо, мне пока и векторов хватит :)
n0th1ng
новенький
 
Сообщения: 12
Зарегистрирован: 21.11.2011 09:52:27


Вернуться в Общее

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru