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

Pahýl
Pahýl
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.