Sobes.tech
Junior — Middle

Vysvetlite princíp otvoreného adresovania pri implementácii asociatívnych kontajnerov typu map.

sobes.tech AI

Odpoveď od AI

Otváraná adresácia je metóda riešenia kolízií v hash tabuľkách, ako je map. Pri pridávaní páru kľúč-hodnota, ak vypočítaný hash ukazuje na obsadenú bunku, hľadanie voľnej bunky sa vykonáva vnútri poľa podľa určitej sekvencie (napríklad lineárne alebo kvadratické sondovanie).

Namiesto použitia spojených zoznamov pre kolízie (reťazce), otvorená adresácia uchováva všetky prvky v jednom poli, postupne kontrolujúc susedné pozície, kým nenájde prázdnu.

Príklad lineárneho sondovania:

// hash - hash funkcia
// table - pole na ukladanie prvkov
// i - počet pokusov
index := (hash(kľúč) + i) % dĺžka(table)

Tento prístup šetrí pamäť na ukazovateľoch, ale vyžaduje kontrolu zaťaženia tabuľky, aby sa predišlo zhoršeniu výkonu.