Exemple #1
0
 public CHashset(int aCapacity, IEqualityComparer <T> aComparer)
 {
     aCapacity  = CHashHelper.MGetPrime(aCapacity);
     m_Buckets  = new int[aCapacity];
     m_Entities = new VEntity[aCapacity];
     m_Comparer = aComparer;
     m_freeList = -1;
 }
Exemple #2
0
 public CDictionary(int aCapacity, IEqualityComparer <Key> aComparer)
 {
     aCapacity  = CHashHelper.MGetPrime(aCapacity);
     m_freeList = -1;
     m_Buckets  = new int[aCapacity];
     m_Entities = new VEntity[aCapacity];
     m_Values   = new Value[aCapacity];
     m_Comparer = aComparer;
 }
Exemple #3
0
        protected void ReSize(int aCapacity)
        {
            aCapacity = CHashHelper.MGetPrime(aCapacity);
            var aNewEntities = new VEntity[aCapacity];
            var aNewValues   = new Value[aCapacity];
            int i            = 0;
            int o            = 0;

            while (i < m_EndIndex)
            {
                if (m_Entities[i].m_Hashcode < 0)
                {
                    ++i;
                    continue;
                }

                aNewEntities[o] = m_Entities[i];
                aNewValues[o]   = m_Values[i];
                ++o;
                ++i;
            }
            var aNewBuckets = new int[aCapacity];

            i = 0;
            while (i < o)
            {
                int a = aNewEntities[i].m_Hashcode % aCapacity;
                aNewEntities[i].m_Next = aNewBuckets[a] - 1;
                aNewBuckets[a]         = i + 1;
            }
            m_freeList = -1;
            m_EndIndex = m_Count = o;
            m_Buckets  = aNewBuckets;
            m_Entities = aNewEntities;
            m_Values   = aNewValues;
        }