Saltu al enhavo

Asocia tabelo

El Vikipedio, la libera enciklopedio

Asocia tabelo estas abstrakta datumtipo por teni duopojn de la formo (ŝlosilo, valoro) kaj almenaŭ la operaciojn por

  • aldoni tian duopon: ENŜOVU(ŝlosilo, valoro)
  • Serĉo per ŝlosilo: TROVU(ŝlosilo)
  • Forigo per ŝlosilo: FORIGU(ŝlosilo)

Kutime disponeblas ankaŭ kelkaj pli specialaj rimedoj, ekz-e la eblo ricevi liston da ĉiuj difinitaj ŝlosiloj aŭ alia maniero por iteracii tra ĉiuj paroj.

Asocia tabelo ne povas enteni du parojn kun egalaj ŝlosiloj.

Oni diras, ke en la paro (ŝ, v) la valoro v estas asociita kun la ŝlosilo ŝ. Semantiko kaj la simbolaro de la indikitaj operacioj povas varii.

La operacio TROVU(ŝlosilo) liveras la valoron, asociitan kun la donita ŝlosilo, aŭ iun specialan objekton NEDIFINIA, kio indikas, ke nenia valoro estas asociita kun la ŝlosilo. La du aliaj operacioj ne liveras rezulton (krom, eventuale, indikon pri sia sukceso aŭ malsukceso).

Interface asocia tabelo similas la enkonstruitajn tabelojn de la ĝeneralcelaj programlingvoj (kiaj Fortrano, Algolo, Paskalo, C), kun tiu diferenco, ke estkiel indicojn oni rajtas uzi ne nur entjerojn, sed ankaŭ alitipajn ŝlosilojn, precipe signoĉenojn (kutime ŝlosilo estas ĝuste signoĉeno). Tiun similecon emfazas AWK, la unua grava programlingvo kie aperis asociaj tabeloj, kaj kie tiu tipo eĉ havas la nomon angle array:

BEGIN {
    tabelo["Vikipedio"] = "Libera enciklopedio";
    tabelo[2015, 5, 31] = "dimanĉo";
    tabelo[255] = 3.14;
    if ("Vikipedio" in tabelo)
        print tabelo["Vikipedio"];
    print tabelo[2015, tabelo[255] * 2 - 1.28, 31];
}

La eligaĵo:

 $ awk -f t.awk
 Libera enciklopedio
 dimanĉo
 $

(En ĉi tiu peco ni vidas la kroman operacion in, kiu ebligas testi eneston de paro kun koncerna ŝlosilo; tio anstataŭas la specialan pseŭdovaloron NEDIFINIA, ĉi-supre menciitan; fakte, en AWK serĉo per nedifinita ŝlosilo liveras la malplenan signoĉenon.)

Asociaj tabeloj disponeblas en programlingvaj bibliotekoj aŭ estas enkonstruitaj en programlingvon mem — ekz-e en la programlingvojn AWK, Perl, Python, Ruby, PHP, Tcl.

Estas pluraj manieroj realigi asociajn tabelojn. La plej ofte uzataj estas per hakettabelo aŭ per serĉarbo.