indeksowanie tablicy ciągami znaków

0

witam, mam takie zadanie: mam kilkaset słów, niektóre z nich są takie same, i właśnie trzeba policzyć ile jakich słów jest. Wiem że mogę to posortować, i potem pętlą sprawdzić ile czego jest, jednak chciałbym zrobić to inną metodą: utworzyć tablicę n elementową(n to liczba słów, każde może być inne), i indeksować ją właśnie tymi słowami. Tylko czy tak w c++ można? chodzi mi o coś takiego:

string slowa[]={"hej", "czesc", "witam", "hej", "dzien_dobry", "czesc"};
int n=6;
int tab[n];
for(int i=0; i<n; i++)tab[slowa[i]]++;

tyle że w ten sposób się nie da. A jest jakiś inny sposób?
ehh, teraz dopiero przeczytałem... temat do usunięcia, a jak zostanie, to dla potomnych:
http://pl.wikipedia.org/wiki/Tablica_asocjacyjna#C.2B.2B

0

funkcja hashująca rozwiąże ten problem elegancko i efektywnie.

0

Ale pamiętajcie ze funkcja hashujaca doskonała nie jest i może sie okazac że różne wyrazy maja ten sam hash! Trzeba ułożyć tablicę hashującą, a potem przelecieć po niej i zliczyć co mieliśmy zliczać.

0

a po co hashować? nie mogą zostać te słowa takie jakie są?

0

No jeśli ty wiesz dokładnie jakie slowa występują w tekście i ile ich jest, to faktycznie moze to być zbędne :)
Ale w przypadku ogólnym, kiedy chcesz zliczyć wszystkie wystepujące słowa, nie znając ilości różnych słów, ani samych słów (taka statystyka tekstu) to hashowanie moze być najlepszym pomysłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1