Asociativní pole

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Asociativní pole (nebo také hash podle nejčastější implementace) je pole, jehož prvky nejsou indexovány pomocí posloupnosti celých čísel, ale pomocí klíčů. Klíčem může být číslo (v nesekvenční posloupnosti), textový řetězec a jiné. 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.

Obsah

Implementace [editovat]

Protože přímo z klíče nelze spočítat index (nebo adresu) prvku v poli, je zapotřebí prvek podle klíče vyhledat. Nejpoužívanější metodou je mechanismus zvaný hašovací funkce (angl. hash function).

Příklad [editovat]

Jazyk Perl [editovat]

%foo = (a=>"1", b=>"10", c=>"100");
print $foo{c}, $foo{b}, $foo{a};

vypíše 100101

Jazyk PHP [editovat]

$foo = array("a"=>"1", "b"=>"10", "c"=>"100");
echo $foo["c"].$foo["b"].$foo["a"];

vypíše 100101

Jazyk JavaScript [editovat]

foo = { a:"1", b:"10", c:"100" };
alert( foo["c"]+foo["b"]+foo["a"] );

vypíše 100101

Jazyk Python [editovat]

hash = {"a":1, "b":2, 5:"b"}
print hash["a"], hash["b"], hash[5]

vypíše 1 2 b

Jazyk C++ s knihovnou Qt [editovat]

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 [editovat]

Známé programovací jazyky, které mají asociativní pole implementováno jako abstraktní datový typ:

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 implemetující rozhraní Map (HashMap, TreeMap,…)

Související články [editovat]