{{page>courses:b6b36pjc:styles#common&noheader&nofooter}} {{page>courses:b6b36pjc:styles#ukoly&noheader&nofooter}} ===== Trie 2 ===== V tomto úkolu převedete strukturu ''trie'' z [[courses:b6b36pjc:ukoly:trie_1|minulého úkolu]] na plnohodnotný objekt s metodami a konstruktory. Též přidáte 2 nové metody, * ''search_by_prefix'' -- Bere řetězec a vrací všechna slova v trii, pro která je toto slovo prefix * ''get_prefixes'' -- Bere řetězec a vrací všechny prefixy tohoto slova v trii a novou třídu, ''word_cursor'', která uživateli umožní číst slova z trie zpátky. Stáhněte si {{:courses:b6b36pjc:ukoly:trie-2.zip|potřebné hlavičkové soubory a testy}}. ==== Co odevzdat? ==== Jeden nebo více souborů ''.cpp'', které implementují funkce deklarované v souboru ''trie.hpp'' tak, aby testy procházely a neztrácela se paměť. Při práci na úkolu soubor ''trie.hpp'' neměňte; nemusíte ho ani odevzdávat. ===== Rady ===== Nezapomeňte, že při definování funkce, která je deklarována uvnitř třídy, k ní musíte referovat pomocí jména třídy. class foo { void say_hello(); }; void foo::say_hello() { std::cout << "hello\n"; } ==== Užitečné hlavičky ==== Pro tento úkol žádné hlavičky ze standardní knihovny nedoporučujeme. ==== Implementační rady ==== * Pravděpodobně vám k převodu bude stačit z metod třídy volat nezměněné funkce z minulého úkolu. * 90 % složitosti tohoto úkolu se schovává ve struktuře ''word_cursor'', ale pokud si ji dobře rozmyslíte, není to s ní tak zlé. * V inicializačním seznamu lze zavolat jiný konstruktor třídy.