Czy C++ nadaje się do nauki algorytmów i struktur danych?
To najczęstszy wybór w programowaniu sportowym i mocny wybór na rozmowy rekrutacyjne: szybki, z biblioteką standardową, która obejmuje prawie każdą potrzebną strukturę. Ceną jest więcej kodu i więcej sposobów na pomyłkę, od wiszących wskaźników po unieważnione iteratory. Samodzielne zbudowanie struktur na początku, tak jak w tej ścieżce, sprawia, że przestają one zaskakiwać.
Które kontenery STL odpowiadają którym strukturom danych?
std::vector to tablica dynamiczna, std::stack i std::queue to adaptery domyślnie oparte na std::deque, std::list to lista dwukierunkowa, std::unordered_map i std::unordered_set to tablice mieszające, std::priority_queue to kopiec binarny (domyślnie kopiec maksymalny, inaczej niż w Pythonie i Javie), a std::map i std::set to zrównoważone drzewa BST, w praktyce drzewa czerwono-czarne. Nie ma kontenera dla drzewa trie ani grafu, te trzeba napisać samodzielnie.
Czy implementować struktury danych samodzielnie, czy po prostu używać STL?
Jedno i drugie, w tej kolejności. Zaimplementuj każdą strukturę raz, żeby wiedzieć, dlaczego wyszukiwanie w std::unordered_map ma średnio stały czas i dlaczego std::map trzyma klucze posortowane, a potem wszędzie używaj STL. Na zawodach ani na rozmowie nikt nie oczekuje ręcznie napisanego drzewa czerwono-czarnego, oczekuje się wyboru właściwego kontenera i znajomości jego kosztu.
C++ czy Python do algorytmów i struktur danych?
C++, jeśli planujesz programowanie sportowe albo rozmowy, na których jest oczekiwany. Python, jeśli chcesz najkrótszej drogi od pomysłu do działającego kodu. Algorytmy są identyczne, więc wiele osób uczy się w jednym języku, a startuje w zawodach w drugim. Każdy kurs struktur danych w tej ścieżce jest prowadzony w obu.
Które kursy z tej ścieżki nie są prowadzone w C++?
Dwa: programowanie dynamiczne i seria rekrutacyjna w Pythonie, oba prowadzone w Pythonie. Są wymienione po krokach, z linkiem, który otwiera je w Pythonie. Idee przenoszą się bez zmian: w C++ tablica memoizacji to std::vector albo std::unordered_map.
Czy muszę znać C++, zanim zacznę tę ścieżkę?
Przynajmniej klasy, wskaźniki, referencje i std::vector. Jeśli to dla ciebie nowość, kurs C++ w Coddy omawia je najpierw, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.