📄 dglintf.inc_h
字号:
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 + -