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é. Mnohdy dovolují některé programovací jazyky použít kombinaci sekvenčního indexování (jako u klasického pole) a asociativního indexování pole.

Význam asociativního pole je v jednodušším zápisu programu, kde odpadají konstrukce pro vyhledávání prvku v poli.

Obsah

[editovat] Implementace

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).

[editovat] Příklad

[editovat] Jazyk Perl

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

vypíše 100101

[editovat] Jazyk PHP

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

vypíše 100101

[editovat] Jazyk JavaScript

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

vypíše 100101

[editovat] Jazyk Python

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

vypíše 1 2 b

[editovat] Jazyk Qt

pole je s určením typů (klíčem je 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

[editovat] Programovací jazyky

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
  • Java – The Collections Framework, třídy implemetující rozhraní Map (HashMap, TreeMap,…)

[editovat] Související články

Osobní nástroje
Jmenné prostory

Varianty
Akce
Navigace
Tisk/export
Nástroje
V jiných jazycích