⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dglintf.inc_h

📁 Delphi Generic Algorytms library - Maps, Lists, Hashmaps, Datastructures.
💻 INC_H
📖 第 1 页 / 共 3 页
字号:
    function  Distance(const Iterator:_IIterator):integer;   //{$ifdef _DGL_Inline} inline; {$endif}
    procedure Assign (const Iterator:_IIterator);  //{$ifdef _DGL_Inline} inline; {$endif}
    procedure Next();overload;   {$ifdef _DGL_Inline} inline; {$endif}
    procedure Next(const Step:integer);overload;  {$ifdef _DGL_Inline} inline; {$endif}
    procedure Previous();  {$ifdef _DGL_Inline} inline; {$endif}
    function  Clone():_IIterator; overload;   {$ifdef _DGL_Inline} inline; {$endif}
    function  Clone(const NextStep:integer):_IIterator;overload;  {$ifdef _DGL_Inline} inline; {$endif}
  end;

          _DGL_TObjIterator = class(TObject)
          public
            class function  IteratorTraits():TIteratorTraits; virtual;  abstract;
            class procedure SetValue(const SelfItData:_IIterator;const aValue: _ValueType); virtual; abstract;
            class function  GetValue(const SelfItData:_IIterator): _ValueType; virtual; abstract;
            class function  GetNextValue(const SelfItData:_IIterator;const Step:integer): _ValueType; virtual; abstract;
            class procedure SetNextValue(const SelfItData:_IIterator;const Step:integer;const aValue:_ValueType); virtual; abstract;
            class function  IsEqual(const SelfItData:_IIterator;const Iterator:_IIterator):boolean; virtual; abstract;
            class function  Distance(const SelfItData:_IIterator;const Iterator:_IIterator):integer; virtual; abstract;
            class procedure Assign (var SelfItData:_IIterator;const Iterator:_IIterator); virtual; abstract;
            class procedure Next(var SelfItData:_IIterator);overload; virtual; abstract;
            class procedure Next(var SelfItData:_IIterator;const Step:integer);overload; virtual; abstract;
            class procedure Previous(var SelfItData:_IIterator);  virtual; abstract;
            class function  Clone(const SelfItData:_IIterator):_IIterator;overload; virtual; abstract;
            class function  Clone(const SelfItData:_IIterator;const NextStep:integer):_IIterator;overload; virtual; abstract;
            class function  Map_GetKey(const SelfItData:_IIterator): _KeyType; virtual; abstract;
          end;



  //容器(Container)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 用来保存和组织多个数据,是抽象出的存储概念,和实现无关
  // 主要方法:ItBegin方法:返回指向容器里第一个元素的 迭代器
  //           ItEnd方法:返回指向容器里最后一个元素的后面一个位置的 迭代器
  //           Clear方法:清空容器中的所有数据
  //           Size方法:容器中的元素个数
  //           IsEmpty方法:容器是否为空,返回值等价于(0=Size());
  //           GetSelfObj方法:返回接口存在的原始对象(self指针),内部使用
  //           Erase方法:  删除容器中值等于参数Value的元素,返回删除的元素个数
  //           Erase方法:  从容器中删除迭代器指向的元素
  //           Insert方法: 在容器指定位置插入一个或多个元素
  //           Assign方法: 整个容器清空重新赋值
  //           Clone方法:创建一个新的容器,并拥有和自身一样的元素
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.08.31
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IContainer = interface
    function  ItBegin(): _IIterator;
    function  ItEnd(): _IIterator;
    procedure Clear();
    function  Size(): Integer;
    function  IsEmpty(): Boolean;
    function  EraseValue(const Value:_ValueType):integer; overload;
    procedure Erase(const ItPos:_IIterator);  overload;
    procedure Erase(const ItBegin,ItEnd: _IIterator);  overload;
    procedure Insert(const Value:_ValueType); overload;
    procedure Insert(const ItPos:_IIterator;const Value:_ValueType); overload;
    procedure Insert(const ItPos:_IIterator;const num:integer;const Value:_ValueType); overload;
    procedure Insert(const ItPos:_IIterator;const ItBegin,ItEnd:_IIterator);overload;
    procedure Assign(const num:integer;const Value: _ValueType);overload;
    procedure Assign(const ItBegin,ItEnd:_IIterator);overload;
    function  Clone():_IContainer;
    procedure CloneToInterface(out NewContainer_Interface); //NewContainer:=_IContainer.Clone();

    function  GetSelfObj():TObject;
  end;

  //序列容器(SerialContainer)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 元素按顺序储存的容器
  // 主要方法:(参见_IContainer)
  //           PushBack方法:在容器后部插入一个或多个元素
  //           PopBack方法: 弹出最后一个元素
  //           Back方法: 返回最后一个元素
  //           PushFront方法:在容器的最前面插入一个元素
  //           PopFront方法: 弹出第一个元素
  //           Front方法: 返回第一个元素
  //           IsEquals方法:判断两个容器中的元素是否完全相等
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.09.09
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _ISerialContainer = interface(_IContainer)
    procedure PushBack(const Value: _ValueType); overload;
    procedure PushBack(const num:integer;Value: _ValueType); overload;
    procedure PushBack(const ItBegin,ItEnd: _IIterator); overload;
    procedure PopBack();
    function  GetBackValue():_ValueType;
    procedure SetBackValue(const aValue:_ValueType);
    property  Back: _ValueType read GetBackValue write SetBackValue;

    procedure PushFront(const Value: _ValueType);overload ;
    procedure PushFront(const num:integer;Value: _ValueType); overload;
    procedure PushFront(const ItBegin,ItEnd: _IIterator); overload;
    procedure PopFront();
    function  GetFrontValue():_ValueType;
    procedure SetFrontValue(const aValue:_ValueType);
    property  Front: _ValueType read GetFrontValue write SetFrontValue;
    function  IsEquals(const AContainer: _IContainer): Boolean;
    function  IsLess(const AContainer: _IContainer): Boolean;
    procedure Resize(const num:integer); overload;
    procedure Resize(const num:integer;const Value:_ValueType); overload;
  end;

  //向量(Vector)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 用线性的内存空间(数组)来组织数据,容器的一个具体实现
  // 主要方法:IndexOf方法:返回元素在容器中的位置
  //           Items属性:以序号的方式快速的访问容器中的元素,时间复杂度O(1)
  //           Reserve方法: 容器预留一些空间(减少动态分配)
  //           Resize方法: 改变容器大小
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.08.31
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IVector = interface(_ISerialContainer)
    function  GetItemValue(const Index: Integer): _ValueType;
    procedure SetItemValue(const Index: Integer;const Value: _ValueType);

    property  Items[const Index: Integer]: _ValueType read GetItemValue write SetItemValue;
    function  IndexOf(const Value: _ValueType): Integer;
    procedure InsertByIndex(const Index: Integer;const Value: _ValueType);
    function  NewIterator(const Index: Integer):_IIterator;
    procedure Reserve(const ReserveSize: integer);
    procedure EraseByIndex(const Index: integer); overload;
  end;

  //链表(List)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 数据以数据接点串连的方式组织,容器的一个具体实现
  // 主要方法:Unique方法:若相邻元素相同,只留下一个
  //           Splice方法:将AContainer内的元素转移到自己的Pos处
  //           Merge方法: 将AContainer内的已序元素转移到已序的自己,并且自己仍保持有序
  //           Reverse方法: 将元素反序
  // 使用方式:
  // 注意事项: 作为参数的:_IList的实际类型必须和自身的类类型一致!
  // 作    者: HouSisong ,2004.08.31
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IList = interface(_ISerialContainer)
    procedure Unique(); overload;
    procedure Unique(const TestBinaryFunction:TTestBinaryFunction); overload;
    procedure Unique(const TestBinaryFunction:TTestBinaryFunctionOfObject); overload;
    procedure Splice(const ItPos:_IIterator; AList:_IList); overload; //全部转移
    procedure Splice(const ItPos:_IIterator; AList:_IList;const ACItPos:_IIterator); overload;//转移ACItPos一个
    procedure Splice(const ItPos:_IIterator; AList:_IList;const ACItBegin,ACItEnd:_IIterator); overload;
    procedure Reverse();

    function  EraseValueIf(const TestFunction:TTestFunction):integer; overload;
    function  EraseValueIf(const TestFunction:TTestFunctionOfObject):integer; overload;
    procedure Sort(); overload;
    procedure Sort(const TestBinaryFunction:TTestBinaryFunction); overload;
    procedure Sort(const TestBinaryFunction:TTestBinaryFunctionOfObject); overload;
    procedure Merge(AList:_IList); overload;
    procedure Merge(AList:_IList;const TestBinaryFunction:TTestBinaryFunction); overload;
    procedure Merge(AList:_IList;const TestBinaryFunction:TTestBinaryFunctionOfObject);overload;
  end;


  //单向链表(SList)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 数据以数据接点单向串连的方式组织,容器的一个具体实现
  // 主要方法:
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2006.10.22
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _ISList = interface(_ISerialContainer)
  end;



  //队列(Deque)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 与Vector相仿并能够在前端也快速插入和删除元素,容器的一个具体实现
  // 主要方法:
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.08.31
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IDeque = interface(_IVector)
  end;

  //对堆栈(Stack)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 容器配接器的一种,一端开口,先进后出队列
  // 主要方法:Push方法:压入一个元素
  //           Pop方法:弹出元素
  //           Top方法:返回开口处的当前值
  //           Clear方法:清空容器中的数据
  //           Size方法:返回容器中的元素个数
  //           IsEmpty方法:判断容器是否为空
  //           IsEquals方法:判断两个容器中的元素是否完全相等
  //           Clone方法:创建一个新的容器,并拥有和自身一样的元素
  //           Assign方法: 整个容器清空重新赋值
  //           GetSelfObj方法:返回接口存在的原始对象(self指针),内部使用
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.08.31
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IStack = interface
    procedure Push(const Value: _ValueType);
    procedure Pop();
    function  GetTopValue():_ValueType;
    procedure SetTopValue(const aValue:_ValueType);
    property  Top: _ValueType read GetTopValue write SetTopValue;
    procedure Clear();
    function  Size(): Integer;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -