#pragma warning disable 0219 public static void Test0() { Console.WriteLine("Performance_ViDoubleLink3.Test0"); ViDoubleLink3 <UInt32> list = new ViDoubleLink3 <UInt32>(); UInt32 cnt = 10000000; UInt32 round = 100; Console.WriteLine(DateTime.Now); for (UInt32 idx = 0; idx < cnt; ++idx) { list.PushBack(idx); } Console.WriteLine(DateTime.Now); for (UInt32 idx = 0; idx < round; ++idx) { ViDoubleLinkNode3 <UInt32> iter = list.GetHead(); while (!list.IsEnd(iter)) { UInt32 value = iter.Data; ViDoubleLink3 <UInt32> .Next(ref iter); ///<使用> ///</使用> } } Console.WriteLine(DateTime.Now); }
void _Check(ViVector3 center) { ViDebuger.AssertError(_deleIsInRange); ViDoubleLinkNode3 <ViRefPtr <TEntity> > iter = _objs.GetHead(); while (!_objs.IsEnd(iter)) { TEntity obj = iter.Data.Obj; ViDoubleLink3 <ViRefPtr <TEntity> > .Next(ref iter); if (!_deleIsInRange(obj, center)) { _objs.Remove(iter); } } }
#pragma warning disable 0219 public static void Test() { ViDoubleLink3 <int> list = new ViDoubleLink3 <int>(); list.PushBack(1); list.PushBack(3); { ///<正向迭代> ViDoubleLinkNode3 <int> iter = list.GetHead(); while (!list.IsEnd(iter)) { int value = iter.Data; ViDoubleLink3 <int> .Next(ref iter); ///<使用> Console.WriteLine(value); ///</使用> } } { ///<反向迭代> ViDoubleLinkNode3 <int> iter = list.GetTail(); while (!list.IsEnd(iter)) { int value = iter.Data; ViDoubleLink3 <int> .Pre(ref iter); ///<使用> Console.WriteLine(value); ///</使用> } } foreach (int value in list) { Console.WriteLine(value); } }
void _EraseFarst(ViVector3 center) { if (_objs.Count == 0) { return; } float fMaxDist = 0.0f; ViDoubleLinkNode3 <ViRefPtr <TEntity> > iter = _objs.GetHead(); ViDoubleLinkNode3 <ViRefPtr <TEntity> > iterFar = iter; while (!_objs.IsEnd(iter)) { TEntity obj = iter.Data.Obj; ViDoubleLink3 <ViRefPtr <TEntity> > .Next(ref iter); float fDist = obj.GetDistance(center); if (fMaxDist <= fDist) { fMaxDist = fDist; iterFar = iter; } } _objs.Remove(iterFar); }