38 #include <stk_util/util/hashtable_eastl.h> 39 #include <stk_util/util/utility_eastl.h> 45 #pragma warning(disable: 4267) // 'argument' : conversion from 'size_t' to 'const uint32_t', possible loss of data. This is a bogus warning resulting from a bug in VC++. 72 2u, 3u, 5u, 7u, 11u, 13u, 17u, 19u, 23u, 29u, 31u,
73 37u, 41u, 43u, 47u, 53u, 59u, 61u, 67u, 71u, 73u, 79u,
74 83u, 89u, 97u, 103u, 109u, 113u, 127u, 137u, 139u, 149u,
75 157u, 167u, 179u, 193u, 199u, 211u, 227u, 241u, 257u,
76 277u, 293u, 313u, 337u, 359u, 383u, 409u, 439u, 467u,
77 503u, 541u, 577u, 619u, 661u, 709u, 761u, 823u, 887u,
78 953u, 1031u, 1109u, 1193u, 1289u, 1381u, 1493u, 1613u,
79 1741u, 1879u, 2029u, 2179u, 2357u, 2549u, 2753u, 2971u,
80 3209u, 3469u, 3739u, 4027u, 4349u, 4703u, 5087u, 5503u,
81 5953u, 6427u, 6949u, 7517u, 8123u, 8783u, 9497u, 10273u,
82 11113u, 12011u, 12983u, 14033u, 15173u, 16411u, 17749u,
83 19183u, 20753u, 22447u, 24281u, 26267u, 28411u, 30727u,
84 33223u, 35933u, 38873u, 42043u, 45481u, 49201u, 53201u,
85 57557u, 62233u, 67307u, 72817u, 78779u, 85229u, 92203u,
86 99733u, 107897u, 116731u, 126271u, 136607u, 147793u,
87 159871u, 172933u, 187091u, 202409u, 218971u, 236897u,
88 256279u, 277261u, 299951u, 324503u, 351061u, 379787u,
89 410857u, 444487u, 480881u, 520241u, 562841u, 608903u,
90 658753u, 712697u, 771049u, 834181u, 902483u, 976369u,
91 1056323u, 1142821u, 1236397u, 1337629u, 1447153u, 1565659u,
92 1693859u, 1832561u, 1982627u, 2144977u, 2320627u, 2510653u,
93 2716249u, 2938679u, 3179303u, 3439651u, 3721303u, 4026031u,
94 4355707u, 4712381u, 5098259u, 5515729u, 5967347u, 6456007u,
95 6984629u, 7556579u, 8175383u, 8844859u, 9569143u, 10352717u,
96 11200489u, 12117689u, 13109983u, 14183539u, 15345007u,
97 16601593u, 17961079u, 19431899u, 21023161u, 22744717u,
98 24607243u, 26622317u, 28802401u, 31160981u, 33712729u,
99 36473443u, 39460231u, 42691603u, 46187573u, 49969847u,
100 54061849u, 58488943u, 63278561u, 68460391u, 74066549u,
101 80131819u, 86693767u, 93793069u, 101473717u, 109783337u,
102 118773397u, 128499677u, 139022417u, 150406843u, 162723577u,
103 176048909u, 190465427u, 206062531u, 222936881u, 241193053u,
104 260944219u, 282312799u, 305431229u, 330442829u, 357502601u,
105 386778277u, 418451333u, 452718089u, 489790921u, 529899637u,
106 573292817u, 620239453u, 671030513u, 725980837u, 785430967u,
107 849749479u, 919334987u, 994618837u, 1076067617u, 1164186217u,
108 1259520799u, 1362662261u, 1474249943u, 1594975441u,
109 1725587117u, 1866894511u, 2019773507u, 2185171673u,
110 2364114217u, 2557710269u, 2767159799u, 2993761039u,
111 3238918481u, 3504151727u, 3791104843u, 4101556399u,
142 mnNextResize = (uint32_t)ceil(nPrime * mfMaxLoadFactor);
155 mnNextResize = (uint32_t)ceil(nPrime * mfMaxLoadFactor);
166 const uint32_t nMinBucketCount = (uint32_t)(nElementCount / mfMaxLoadFactor);
169 mnNextResize = (uint32_t)ceil(nPrime * mfMaxLoadFactor);
183 if((nElementCount + nElementAdd) > mnNextResize)
185 if(nBucketCount == 1)
188 float fMinBucketCount = (nElementCount + nElementAdd) / mfMaxLoadFactor;
190 if(fMinBucketCount > (
float)nBucketCount)
192 fMinBucketCount =
eastl::max_alt(fMinBucketCount, mfGrowthFactor * nBucketCount);
194 mnNextResize = (uint32_t)ceil(nPrime * mfMaxLoadFactor);
200 mnNextResize = (uint32_t)ceil(nBucketCount * mfMaxLoadFactor);
EASTL_API void * gpEmptyBucketArray[2]
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T &value)
uint32_t GetBucketCount(uint32_t nElementCount) const
uint32_t GetPrevBucketCount(uint32_t nBucketCountHint) const
const uint32_t kPrimeCount
eastl::pair< bool, uint32_t > GetRehashRequired(uint32_t nBucketCount, uint32_t nElementCount, uint32_t nElementAdd) const
uint32_t GetNextBucketCount(uint32_t nBucketCountHint) const
const T & max_alt(const T &a, const T &b)
static uint32_t GetPrevBucketCountOnly(uint32_t nBucketCountHint)
ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T &value)
const uint32_t gPrimeNumberArray[]
EA Standard Template Library.