C stringy
Miroslav Mraz
mrazik na volny.cz
Pátek Říjen 12 20:22:04 CEST 2018
Záleží na tom jak moc si s tím chcete pohrát. Pokud je ta tabulka předem
daná a poměrně malá (desítky položek), můžete zkusit například
https://en.wikipedia.org/wiki/Pearson_hashing .
V tabulce pak máte místo stringu hash, tj. číslo (1 byte), můžete jí
podle něj setřídit a pak vyhledávat třeba bisekcí. Nebo pokud se vám
vejde 256 položek, použít hash hledaného stringu přímo jako index do
tabulky.
Je to ale docela dost práce a blbě se do toho přidávají nové položky. Na
druhou stranu je to dost rychlé.
Mrazík
Dne 12.10.2018 v 15:13 Michal Grunt napsal(a):
> Mám takovouto tabulku:
>
> #include </usr/include/linux/input.h>
>
> typedef struct {
> char *name;
> int value;
> } dict;
>
> dict keyTable[] = {
> { "RESERVED", KEY_RESERVED },
> { "ESC", KEY_ESC },
> { "1", KEY_1 },
> { "2", KEY_2 },
> { "3", KEY_3 },
> { "4", KEY_4 },
> { "5", KEY_5 },
> { "6", KEY_6 }
> ....
> };
>
> Mám svojí proměnou (string) kde mám např. "ESC" a teď potřebuji z té
> tabulky nějak dostat, že "ESC" je KEY_ESC. Třeba takto nebo ještě
> nějak jinak?
>
> for (i = 0; i < pocet_poloze_v_tabulce; i++)
> if (strcmp(keyTable[i].name, mujstring) == 0) break;
>
> tohle_hledam = keyTable[i].value;
>
> MG
Další informace o konferenci Hw-list