Diskuze: Hashovací tabulka - prosím o radu

C# .NET .NET (C# a Visual Basic) Hashovací tabulka - prosím o radu American English version English version

Avatar
fejjaaas
Člen
Avatar
fejjaaas:

Dobrý den, potřeboval bych poradit ohledně jedné části práce, jejíž zbytek mám už naprogramovaný. Mám libovolné pole intů, a všechny hodnoty tohoto pole mám vložit do hashovací tabulky a nevím, jak se to vlastně vůbec dělá :-(. Navíc musí jít do této tabulky přidat či odebrat jakýkoliv prvek. Prý si má hashovací tabulka umět sama umístit danou hodnotu do sebe, aniž bych musel psát klíč dané hodnoty.
Budu vám zavázán za návrh řešení, předem díky moc ;-)

 
Odpovědět 3.5.2013 15:18
Avatar
fejjaaas
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
fejjaaas:

Mohu použít cokoliv, během neděle na tom chci dělat, byl bych rád za jakoukoliv radu. Především jde o algoritmus pro přidávání a mazání položek v hashovací tabulce (Podle jaké funkce se to má provádět).

 
Nahoru Odpovědět 4.5.2013 22:56
Avatar
exyi
Redaktor
Avatar
exyi:

Podle mě je lepší použít generický Dictionary (http://msdn.microsoft.com/…fhwa508.aspx). Příklad:

var hashtable = new Dictionary<string, int>(5); //Nová hashovací tabulka s kapacitou 5, lze přidávat i za kapacitou, ona se sama rozroste
//přidáme několik prvků
hashtable.Add("hodnota1", 300);
hashtable.Add("hodnota2", 1000000);
hashtable.Add("hodnota3", 120);
//...
//a ted odebereme
hashtable.Remove("hodnota3");
//a vypiseme hodnotu1 na konzoli
Console.WriteLine(hashtable["hodnota1"]);

ale přidávání bez klíče mi připadá jako blbost, jak by ses k té hodnotě měl dostat?

Editováno 5.5.2013 6:31
 
Nahoru Odpovědět 5.5.2013 6:30
Avatar
fejjaaas
Člen
Avatar
Odpovídá na exyi
fejjaaas:

Údajně pomocí nějaké hashovací funkce, tak nevím... Ale mrknu na Tvůj způsob. Jsem rád za jakoukoliv radu. Snad to dám nějak dohromady. Díky :-)

 
Nahoru Odpovědět 5.5.2013 16:00
Avatar
exyi
Redaktor
Avatar
Odpovídá na fejjaaas
exyi:

Co si vzpominam ze jsem cetl o hashovacich tabulkach, tak by to tam nekam narvat slo, ale zajimalo by me jak z toho tu hodnotu vymlatit?
Mozna tak ze to prolezes foreachem ;) .

 
Nahoru Odpovědět 5.5.2013 17:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.