add indexOf,Remove(object),Remove(Collection<T>) functions at Collection template.

This commit is contained in:
2021-03-19 11:55:40 +08:00
parent 401d48091f
commit 88d6590950

View File

@@ -190,16 +190,71 @@ namespace hgl
return(true);
}
///**
// * 从合集中移除指定的数据
// */
//virtual uint64 Remove(const Collection<T> &coll)
//{
// for(const T &e:coll)
// {
//
// }
//}
virtual int64 indexOf(const T &value)
{
T *p=begin();
T *ep=end();
do
{
if(*p==value)
return(p-begin());
}
while(++p<ep);
return -1;
}
/**
* 移除指定数据
* @param value 要移除的数据
* @return 移除的数据总量
*/
virtual uint64 Remove(const T &value)
{
uint64 origin_count=data_count;
T *p=end();
T *ep;
T *bp=begin();
ep=--p;
do
{
if(*p==value)
{
if(*p==*ep) //就是最后一个不管了
{
}
else
{
*p=*ep;
--ep;
}
--data_count;
}
}
while(--p>=bp);
return origin_count-data_count;
}
/**
* 从合集中移除指定的数据
* @param coll 要移除的数据合集
* @return 移除的数据总量
*/
virtual uint64 Remove(const Collection<T> &coll)
{
uint64 origin_count=data_count;
for(const T &value:coll)
Remove(value);
return origin_count-data_count;
}
};//class Collection
}//namespace hgl
#endif//HGL_COLLECTION_INCLUDE