ProgrammingのTipなど

ObjectPascalでのC++Vectorのような動的配列管理クラス

C++のSTLのVectorのような便利な動的配列クラスを
ObjectPascalでも作ってみました

FreePascal用です

unit TVector;

{$mode objfpc}

interface

uses
  crt, math, SysUtils;

type
TVectorInt = class
public
  v: array of integer;
  constructor create;
  procedure push_back(num: integer);
  function lastIndex: integer;
  function lengthV: integer;
  procedure clear;
end;

TVectorSingle = class
public
  v: array of single;
  constructor create;
  procedure push_back(num: single);
  function lastIndex: integer;
  function lengthV: integer;
  procedure clear;
end;

implementation

/////////////////// TVectorInt ////////////////////////

constructor TVectorInt.create;
begin

end;

procedure TVectorInt.push_back(num: integer);
begin
  SetLength(v, Length(v)+1);
  v[Length(v)-1] := num;
end;

function TVectorInt.lastIndex: integer;
begin
  result := Length(v)-1;
end;

function TVectorInt.lengthV: integer;
begin
  result := Length(v);
end;

procedure TVectorInt.clear;
begin 
  SetLength(v, 0);
  v := nil; 
end;

///////////// TVectorSingle ///////////////////

constructor TVectorSingle.create;
begin

end;

procedure TVectorSingle.push_back(num: single);
begin
  SetLength(v, Length(v)+1);
  v[Length(v)-1] := num;
end;

function TVectorSingle.lastIndex: integer;
begin
  result := Length(v)-1;
end;

function TVectorSingle.lengthV: integer;
begin
  result := Length(v);
end;

procedure TVectorSingle.clear;
begin 
  SetLength(v, 0);
  v := nil; 
end;

end.

//Sample Code
{
var
  v1: TVectorInt;
  i: integer;
BEGIN
  v1 := TVectorInt.create;
  v1.push_back(5);
  v1.push_back(6);
  v1.push_back(7);
  for i := 0 to v1.lastIndex do
  begin  
    writeln(v1.v[i]);
  end;  
  v1.clear;
END.
////////////////////////////// TVectorSingle 
var
  v1: TVectorSingle;

BEGIN
  v1 := TVectorSingle.create;
  v1.push_back(5.0);
  v1.push_back(6.0);
  v1.push_back(7.0);
  for i := 0 to v1.lastIndex do
  begin  
    writeln(v1.v[i]);
  end;  
  v1.clear;
END.
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます