Страница 1 из 1

Контейнеры

СообщениеДобавлено: 30.11.2011 07:03:17
n0th1ng
Может это нубский вопрос, но существует ли в freepascal аналог std::list из C++? Ну или хотя бы std::vector? Чтоб можно было добавлять/удалять элементы в список.

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

СообщениеДобавлено: 30.11.2011 07:51:16
Brainenjii
TList? TFPGList в fgl - обобщение (шаблон) списка

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

СообщениеДобавлено: 30.11.2011 08:14:26
n0th1ng
OK, спасибо вроде то что искал. Просто в учебнике Мансурова нету этого, там был только связанный список.
А как пробежаться по списку?

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

СообщениеДобавлено: 30.11.2011 20:15:21
Odyssey
Ещё для классов, т.е. наследников 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;

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

СообщениеДобавлено: 02.12.2011 04:06:33
n0th1ng
Спасибо, мне пока и векторов хватит :)