Asociativní pole
Asociativní pole (slangově hash podle nejčastější implementace, v některých jazycích slovník, dictionary, anglicky též map) je datová struktura složená z dvojic klíč-hodnota. Klíčem v asociativním poli bývá často textový řetězec, ale klíčem může být i číslo nebo naopak složená datová struktura. Normální pole lze považovat za speciální případ asociativního pole, u něhož klíče tvoří souvislý interval celých čísel. Některé programovací jazyky dovolují použít kombinaci sekvenčního indexování (jako u klasického pole) a asociativního indexování pole.
Význam asociativního pole spočívá v jednodušším zápisu programu, při kterém odpadají konstrukce pro vyhledávání prvku v poli.
Implementace
Protože klíč nelze přímo použít jako číslo nebo index prvku v poli, je zapotřebí prvek podle klíče vyhledat. Nejpoužívanější metodou je mechanismus zvaný hašovací funkce (anglicky též hash function). Některé implementace používají vyhledávací stromy.
Příklad
Jazyk Perl
%foo = (a=>"1", b=>"10", c=>"100"); print $foo{c}, $foo{b}, $foo{a};
vypíše 100101
Jazyk PHP
$foo = ["a"=>"1", "b"=>"10", "c"=>"100"]; echo $foo["c"].$foo["b"].$foo["a"];
vypíše 100101
Jazyk JavaScript
foo = { a:"1", b:"10", c:"100" }; alert( foo["c"]+foo["b"]+foo["a"] );
vypíše 100101
Jazyk Python
foo = {"a":1, "b":2, 5:"b"} print(foo["a"], foo["b"], foo[5])
vypíše 1 2 b
Jazyk C++ s knihovnou Qt
Pole je s určením typů (v příkladu je klíčem datový typ Qstring, hodnotou integer), v Qt je k dispozici i QMultiHash.
QHash<QString, int> hash; hash["a"] = 1; hash["b"] = 3; hash["c"] = 7; out<<hash["a"]<<hash["b"]<<hash["c"];
vypíše: 137
Programovací jazyky
Známé programovací jazyky, které mají asociativní pole implementováno jako abstraktní datový typ:
- ActionScript
- JavaScript
- Perl
- Python
- PHP
Některé programovací jazyky, které nemají přímo implementovanou podporu asociativního pole, ale obsahují implementaci tohoto typu pomocí sady funkcí nebo metod třídy v knihovnách:
- C++ – STL, třída
map
- C++ – knihovna Qt
- Java – The Collections Framework, třídy implementující rozhraní
Map
(HashMap
,TreeMap
, …)
Související články
- Hašovací tabulka
- Ukazatel
- Pole
- Abstraktní datový typ
- Obsahem adresovatelná paměť
Tento článek je příliš stručný nebo postrádá důležité informace. Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty. |