Junior — Middle
Vysvětlete princip otevřeného adresování při implementaci asociativních kontejnerů typu map.
sobes.tech AI
Odpověď od AI
Otevřená adresace je metoda řešení kolizí v hashtabulkách, jako je map. Při přidávání páru klíč-hodnota, pokud vypočtený hash ukazuje na obsazenou buňku, hledání volné buňky probíhá uvnitř pole podle určité sekvence (například lineárního nebo kvadratického sondování).
Namísto použití spojových seznamů pro kolize (řetězce), otevřená adresace ukládá všechny prvky uvnitř jednoho pole, postupně kontrolujíc sousední pozice, dokud nenajde prázdnou.
Příklad lineárního sondování:
// hash - hashovací funkce
// table - pole pro ukládání prvků
// i - počet pokusů
index := (hash(klíč) + i) % délka(table)
Tento přístup šetří paměť na ukazatelích, ale vyžaduje kontrolu zatížení tabulky, aby se předešlo zhoršení výkonu.