Asociativní pole

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Asociativní pole (slangově podle nejčastější implementace, v některých jazycích slovník, též ) 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 ( též ). +more 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 hash; hash["a"] = 1; hash["b"] = 3; hash["c"] = 7; out 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, …)

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top