diff --git a/inc/hgl/type/Map.cpp b/inc/hgl/type/Map.cpp index 54ba321..31c5f5d 100644 --- a/inc/hgl/type/Map.cpp +++ b/inc/hgl/type/Map.cpp @@ -577,5 +577,53 @@ namespace hgl ++idp; } } + + /** + * 统计出所有在in_list中出现的数据,产生的结果写入with_list + */ + template + void _Map::WithList(_Map::DataPairList &with_list,const List &in_list) + { + with_list.ClearData(); + const int count=this->GetCount(); + + if(count<=0)return; + + with_list.PreMalloc(count); + + const DataPair *sp=this->GetDataList(); + + for(int i=0;i + void _Map::WithoutList(_Map::DataPairList &without_list,const List &in_list) + { + without_list.ClearData(); + const int count=this->GetCount(); + + if(count<=0)return; + + without_list.PreMalloc(count); + + const DataPair *sp=this->GetDataList(); + + for(int i=0;i - int GetKey(IT &il_list) ///<取得所有索引合集 + int GetKeyList(IT &il_list) ///<取得所有索引合集 { const int count=data_list.GetCount(); @@ -79,7 +79,7 @@ namespace hgl } template - int GetValue(IT &il_list) ///<取得所有数值合集 + int GetValueList(IT &il_list) ///<取得所有数值合集 { const int count=data_list.GetCount(); @@ -94,9 +94,30 @@ namespace hgl ++idp; } + return count; + } + + template + int GetList(ITK &key_list,ITV &value_list) ///<取得所有索引合集 + { + const int count=data_list.GetCount(); + + if(count<=0) + return count; + + DataPair **idp=data_list.GetData(); + + for(int i=0;ileft); + value_list.Add((*idp)->right); + ++idp; + } + return count; } + DataPair * GetItem(int n){return GetListObject(data_list,n);} ///<取指定序号的数据 bool GetBySerial(int,K &,V &) const; ///<取指定序号的数据 bool GetKey(int,K &); ///<取指定序号的索引 @@ -111,28 +132,8 @@ namespace hgl void EnumAllValue(void (*enum_func)(V)); ///<枚举所有数值 void EnumValue(bool (*enum_func)(V)); ///<枚举所有数值(返回true/false表示是否继续) - /** - * 统计出不在in_list中的数据,产生的结果写入without_list - */ - void WithoutList(DataPairList &without_list,const List &in_list) - { - without_list.ClearData(); - const int count=this->GetCount(); - - if(count<=0)return; - - without_list.PreMalloc(count); - - const DataPair *sp=this->GetDataList(); - - for(int i=0;i &in_list); ///<统计出所有在in_list中出现的数据,产生的结果写入with_list + void WithoutList(DataPairList &without_list,const List &in_list); ///<统计出所有没有出现在in_list中的数据,产生的结果写入without_list };//class _Map template class Map:public _Map >