FastLED 3.9.15
Loading...
Searching...
No Matches

◆ find_index()

template<typename Key, typename T, typename Hash = Hash<Key>, typename KeyEqual = EqualTo<Key>, int INLINED_COUNT = FASTLED_HASHMAP_INLINED_COUNT>
fl::size fl::unordered_map< Key, T, Hash, KeyEqual, INLINED_COUNT >::find_index ( const Key & key) const
inlineprivate

Definition at line 907 of file unordered_map.h.

907 {
908 const fl::size cap = _buckets.size();
909 const fl::size mask = cap - 1;
910 const fl::size h = _hash(key) & mask;
911
913 // linear probing
914 for (fl::size i = 0; i < cap; ++i) {
915 const fl::size idx = (h + i) & mask;
916 if (is_empty(idx))
917 return npos();
919 return idx;
920 }
921 } else {
922 // quadratic probing up to 8 tries
923 fl::size i = 0;
924 for (; i < kQuadraticProbingTries; ++i) {
925 const fl::size idx = (h + i + i * i) & mask;
926 if (is_empty(idx))
927 return npos();
929 return idx;
930 }
931 // fallback to linear for the rest
932 for (; i < cap; ++i) {
933 const fl::size idx = (h + i) & mask;
934 if (is_empty(idx))
935 return npos();
937 return idx;
938 }
939 }
940
941 return npos();
942 }
static fl::size npos()
bool is_empty(fl::size idx) const
fl::vector_inlined< Entry, INLINED_COUNT > _buckets
bool is_occupied(fl::size idx) const