в Lazarus (
FreePascal) есть модуль
gvector, подключаешь его к проекту и создаешь специализацию от
TVector. Если по каким-то причинам стандартные TList и TCollection вас не устраивают.
Пример:
uses gvector;
type myVector = specialize TVector<LongInt>;
var vec: myVector;
begin
vec := myVector.create;
vec.PushBack( 5 );
vec.PushBack( -5 );
vec.PushBack( 123 );
writeln(vec[0], ' ', vec[1], ' ', vec[2]);
readln;
end;
Еще один из вариантов, это модуль
fgl:
uses fgl;
type MyClass = class
i: int64;
constructor Create(setI: int64);
end;
myVector = specialize TFPGList<MyClass>;
constructor MyClass.Create(setI: int64);
begin
i := setI;
end;
var vec: myVector;
begin
vec := myVector.create;
vec.add( MyClass.Create(5) );
vec.add( MyClass.Create(-5) );
vec.add( MyClass.Create(123) );
writeln(vec[0].i, ' ', vec[1].i, ' ', vec[2].i);
readln;
end;