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

📄 dglintf.inc_h

📁 Delphi Generic Algorytms library - Maps, Lists, Hashmaps, Datastructures.
💻 INC_H
📖 第 1 页 / 共 3 页
字号:
    function  IsEmpty(): Boolean;
    function  IsEquals(const AContainer: _IStack): Boolean;
    function  Clone():_IStack;
    procedure Assign(const num:integer;const Value: _ValueType);overload;
    procedure Assign(const ItBegin,ItEnd:_IIterator);overload;

    function  GetSelfObj():TObject;
  end;

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

    function  GetSelfObj():TObject;
  end;

  //优先级队列(PriorityQueue)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 容器配接器的一种
  // 主要方法:Push方法:向容器中压入一个元素
  //           Pop方法:弹出最优先的一个元素
  //           Top方法:返回最优先的值
  //           Clear方法:清空容器中的数据
  //           Size方法:返回容器中的元素个数
  //           IsEmpty方法:判断容器是否为空
  //           IsEquals方法:判断两个容器中的元素是否完全相等
  //           Clone方法:创建一个新的容器,并拥有和自身一样的元素
  //           Assign方法: 整个容器清空重新赋值
  //           GetSelfObj方法:返回接口存在的原始对象(self指针),内部使用
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2005.03.26
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  _IPriorityQueue = 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;
    function  IsEmpty(): Boolean;
    function  IsEquals(const AContainer: _IPriorityQueue): Boolean;
    function  Clone():_IPriorityQueue;
    procedure Assign(const num:integer;const Value: _ValueType);overload;
    procedure Assign(const ItBegin,ItEnd:_IIterator);overload;

    function  GetSelfObj():TObject;
  end;

  //Set,MultiSet的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 元素集合 (Set不允许有重复元素,MultiSet允许有重复元素)
  // 主要方法:(参见_IContainer的说明)
  //           Count方法: 统计某元素的个数
  //           Find方法: 查找某个元素的第一次出现位置
  //           LowerBound方法: 返回某值的第一个可安插位置
  //           UpperBound方法: 返回某值的最后一个可安插位置
  //           EqualRange方法: 返回某值的可安插的第一个和最后一个位置
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.09.08
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _ISet = interface(_IContainer)
    function  Count(const Value:_ValueType):integer;
    function  Find(const Value:_ValueType):_IIterator;
    function  LowerBound(const Value:_ValueType):_IIterator;
    function  UpperBound(const Value:_ValueType):_IIterator;
    procedure EqualRange(const Value:_ValueType;out ItBegin,ItEnd:_IIterator);
  end;

  _IMultiSet = interface(_ISet)
  end;
  
  //Map迭代器(Map Iterator)的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 用来遍历map容器里面的元素
  // 主要方法:(参见对迭代器的统一说明)
  //           Key属性:用来访问(只读)迭代器引用的键值
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.09.09
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IMapIterator =object(_IIterator)
    function  GetKey(): _KeyType;

    property  Key: _KeyType read GetKey;
  end;

  //Map,MultiMap的统一说明
  //----------------------------------------------------------------------------
  // 作用描述: 键值/实值 映射 (Map不允许有键值重复,MultiMap允许有键值重复)
  // 主要方法:ItBegin方法:返回指向容器里第一个元素的 迭代器
  //           ItEnd方法:返回指向容器里最后一个元素的后面一个位置的 迭代器
  //           Clear方法:清空容器中的所有数据
  //           Size方法:容器中的元素个数
  //           IsEmpty方法:容器是否为空,返回值等价于(0=Size());
  //           IsEquals方法:判断两个容器中的元素是否完全相等
  //           GetSelfObj方法:返回接口存在的原始对象(self指针),内部使用
  //           Erase方法:  删除容器中值等于参数Value的元素,返回删除的元素个数
  //           Erase方法:  从容器中删除迭代器指向的元素
  //           Insert方法: 在容器指定位置插入一个或多个元素
  //           Assign方法: 整个容器清空重新赋值
  //           Clone方法:创建一个新的容器,并拥有和自身一样的元素
  //           Count方法: 统计某键值的个数
  //           Find方法: 查找某键值的第一次出现位置
  //           LowerBound方法: 返回某键值的第一个可安插位置
  //           UpperBound方法: 返回某键值的最后一个可安插位置
  //           EqualRange方法: 返回某键值的可安插的第一个和最后一个位置
  //           Items属性:以Key为序号的方式访问容器中的元素
  // 使用方式:
  // 注意事项:
  // 作    者: HouSisong ,2004.09.09
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _IMap = interface
    function  GetItemValue(const Key: _KeyType): _ValueType;
    procedure SetItemValue(const Key: _KeyType;const Value: _ValueType);

    function  ItBegin(): _IMapIterator;
    function  ItEnd(): _IMapIterator;
    property  Items[const Key:_KeyType]: _ValueType read GetItemValue write SetItemValue;
    procedure Clear();
    function  Size(): Integer;
    function  IsEmpty(): Boolean;
    function  EraseValue(const Value:_ValueType):integer; overload;
    function  EraseValue(const Key:_KeyType;const Value:_ValueType):integer; overload;
    function  EraseKey(const Key:_KeyType):integer; overload;
    procedure Erase(const ItPos:_IMapIterator);  overload;
    procedure Erase(const ItBegin,ItEnd: _IMapIterator);  overload;
    procedure Insert(const Key:_KeyType;const Value:_ValueType); overload;
    procedure Insert(const ItBegin,ItEnd:_IMapIterator);overload;
    procedure Insert(const num:integer;const Key:_KeyType;const Value:_ValueType); overload;
    procedure Assign(const ItBegin,ItEnd:_IMapIterator);overload;
    procedure Assign(const num:integer;const Key:_KeyType;const Value: _ValueType);overload;

    function  Count(const Key:_KeyType):integer;
    function  Find(const Key:_KeyType):_IMapIterator;
    function  LowerBound(const Key:_KeyType):_IMapIterator;
    function  UpperBound(const Key:_KeyType):_IMapIterator;
    procedure EqualRange(const Key:_KeyType;out ItBegin,ItEnd:_IMapIterator);

    function  Clone():_IMap;

    function  GetSelfObj():TObject;
  end;

  _IMultiMap = interface(_IMap)
  end;


  /////////////////////////

type
  //迭代器类_TAbstractIterator
  //----------------------------------------------------------------------------
  // 作用描述: 迭代器类的虚基类,实现_IIterator接口
  // 主要方法:参见接口单元对迭代器的说明
  // 使用方式:
  // 注意事项: 不要创建该类的实例
  // 作    者: HouSisong, 2004.09.01
  // [相关资料]: (如果有的话)
  // [维护记录]: (类发布后,其修改需要记录下来:修改人、时间、主要原因内容)
  //----------------------------------------------------------------------------
  _TAbstractIterator = class(_DGL_TObjIterator)
  //实现_IIterator接口
  public
    class function  IteratorTraits():TIteratorTraits; override;
    class function  GetNextValue(const SelfItData:_IIterator;const Step:integer): _ValueType;override;//时间复杂度O(Step)
    class procedure SetNextValue(const SelfItData:_IIterator;const Step:integer;const aValue:_ValueType); override;//时间复杂度O(Step)
    class function  Distance(const SelfItData:_IIterator;const Iterator:_IIterator):integer; override;//时间复杂度O(Step)
    class procedure Next(var SelfItData:_IIterator;const Step:integer); overload; override; //时间复杂度O(Step)
    class function  Clone(const SelfItData:_IIterator):_IIterator;overload; override;
    class function  Clone(const SelfItData:_IIterator;const NextStep:integer):_IIterator;overload; override; //时间复杂度O(NextStep)
    class procedure Assign(var SelfItData:_IIterator;const Iterator: _IIterator); override;
    class procedure ItCreate(var SelfItData:_IIterator);overload;virtual;
    class procedure ItCreate(var SelfItData:_IIterator;const AIterator: _IIterator);overload;virtual;
  end;
  

{$endif } // __DGLIntf_inc_h_

⌨️ 快捷键说明

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