Eignet sich C++ für Datenstrukturen und Algorithmen?
C++ ist die häufigste Wahl in der Wettbewerbsprogrammierung und eine starke für Interviews: schnell, mit einer Standardbibliothek, die fast jede Struktur abdeckt, die du brauchst. Der Preis ist mehr Code und mehr Möglichkeiten, Fehler zu machen, von hängenden Zeigern bis zu ungültig gewordenen Iteratoren. Die Strukturen zuerst selbst zu bauen, wie dieser Pfad es tut, sorgt dafür, dass sie keine Überraschungen mehr sind.
Welche STL-Container entsprechen welchen Datenstrukturen?
std::vector ist ein dynamisches Array, std::stack und std::queue sind standardmäßig Adapter über std::deque, std::list ist eine doppelt verkettete Liste, std::unordered_map und std::unordered_set sind Hashtabellen, std::priority_queue ist ein binärer Heap (standardmäßig ein Max-Heap, anders als bei Python und Java), und std::map und std::set sind balancierte binäre Suchbäume, in der Praxis Rot-Schwarz-Bäume. Einen Trie- oder Graph-Container gibt es nicht; die schreibst du selbst.
Sollte ich Datenstrukturen selbst implementieren oder einfach die STL nutzen?
Beides, in dieser Reihenfolge. Implementiere jede Struktur einmal, damit du weißt, warum Lookups in einer std::unordered_map im Mittel konstante Zeit brauchen und warum eine std::map ihre Schlüssel sortiert hält, und nutze danach überall die STL. In einem Wettbewerb oder Interview erwartet niemand einen handgeschriebenen Rot-Schwarz-Baum; erwartet wird, dass du den richtigen Container wählst und seine Kosten kennst.
C++ oder Python für DSA?
C++, wenn du Wettbewerbsprogrammierung machen willst oder dort Interviews führst, wo es erwartet wird; Python, wenn du den kürzesten Weg von der Idee zum funktionierenden Code willst. Die Algorithmen sind identisch, deshalb lernen viele in der einen Sprache und treten in der anderen an. Jeder Datenstrukturkurs auf diesem Pfad wird in beiden unterrichtet.
Welche Kurse auf diesem Pfad werden nicht in C++ unterrichtet?
Zwei: dynamische Programmierung und die Python-Interviewreihe, beide in Python unterrichtet. Sie sind nach den Schritten aufgeführt, mit einem Link, der sie in Python öffnet. Die Ideen lassen sich unverändert übertragen: In C++ ist eine Memo-Tabelle ein std::vector oder eine std::unordered_map.
Muss ich C++ können, bevor ich mit diesem Pfad anfange?
Mindestens Klassen, Zeiger, Referenzen und std::vector. Wenn das neu für dich ist, behandelt Coddys C++-Kurs es zuerst, kostenlos, und dieser Pfad setzt dort an, wo er endet.