C++のSTLのVectorのような便利な動的配列クラスを
ObjectPascalでも作ってみました
FreePascal用です
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. }
コメントをかく