测试IndexedList后的调整

This commit is contained in:
hyzboy 2025-04-25 00:20:45 +08:00
parent 51bd01e407
commit 4104f1cb75
2 changed files with 8 additions and 12 deletions

View File

@ -91,7 +91,7 @@ namespace hgl
data_array.AddCount(n); data_array.AddCount(n);
hgl_set(data_array.data()+ec,data,n); hgl_set(data_array.data()+ec,&data,n);
return(ec); return(ec);
} }

View File

@ -2,6 +2,7 @@
#include<hgl/type/Stack.h> #include<hgl/type/Stack.h>
#include<initializer_list> #include<initializer_list>
#include<algorithm>
namespace hgl namespace hgl
{ {
@ -34,6 +35,7 @@ namespace hgl
data_array.Alloc(count); data_array.Alloc(count);
data_index.Alloc(count); data_index.Alloc(count);
free_index.PreAlloc(count);
return(true); return(true);
} }
@ -49,9 +51,6 @@ namespace hgl
public: public:
using iterator_category = std::forward_iterator_tag;
using value_type = T;
using difference_type = std::ptrdiff_t;
using pointer = T*; using pointer = T*;
using reference = T&; using reference = T&;
@ -235,9 +234,9 @@ namespace hgl
* @param count * @param count
* @return * @return
*/ */
virtual int32 DeleteAt(int32 start,int32 count=1) virtual int32 Delete(int32 start,int32 count=1)
{ {
if(!IsValidIndex(start)return(-1); if(!IsValidIndex(start))return(-1);
if(count<=0)return(count); if(count<=0)return(count);
if(start+count>data_index.GetCount()) if(start+count>data_index.GetCount())
@ -245,7 +244,7 @@ namespace hgl
if(count<=0)return(0); if(count<=0)return(0);
for(int32 i=start;i<data_index.GetCount();i++) for(int32 i=start;i<start+count;i++)
free_index.Push(data_index[i]); free_index.Push(data_index[i]);
data_index.Delete(start,count); data_index.Delete(start,count);
@ -282,10 +281,7 @@ namespace hgl
hgl_cpy(sorted_index.GetData(),data_index.GetData(),count); hgl_cpy(sorted_index.GetData(),data_index.GetData(),count);
std::sort(sorted_index.GetData(),count,sizeof(int32),[](const void *a,const void *b) std::sort(sorted_index.begin(),sorted_index.end(),std::less<int>());
{
return *(int32 *) a-*(int32 *) b;
});
//查找空的位置 //查找空的位置
{ {
@ -334,7 +330,7 @@ namespace hgl
{ {
overflow_index.Pop(index); overflow_index.Pop(index);
hgl_cpy<T>(data_array.At(new_location),data_array.At(data_index[index])); hgl_cpy<T>(data_array[new_location],data_array[data_index[index]]);
data_index[index]=new_location; data_index[index]=new_location;
} }