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; }
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; }
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; }