C++ est-il adapté aux structures de données et aux algorithmes ?
C'est le choix le plus courant en programmation compétitive, et un choix solide pour les entretiens : rapide, avec une bibliothèque standard qui couvre presque toutes les structures dont tu as besoin. La contrepartie : plus de code et plus de façons de te tromper, des pointeurs pendants aux itérateurs invalidés. Construire d'abord les structures toi-même, comme le fait ce parcours, c'est ce qui les empêche de te surprendre.
Quels conteneurs de la STL correspondent à quelles structures de données ?
std::vector est un tableau dynamique, std::stack et std::queue sont par défaut des adaptateurs sur std::deque, std::list est une liste doublement chaînée, std::unordered_map et std::unordered_set sont des tables de hachage, std::priority_queue est un tas binaire (un tas-max par défaut, contrairement à ceux de Python et de Java), et std::map et std::set sont des arbres binaires de recherche équilibrés, en pratique des arbres rouge-noir. Il n'y a pas de conteneur pour les tries ni pour les graphes ; ceux-là, tu les écris.
Faut-il implémenter les structures de données soi-même ou utiliser directement la STL ?
Les deux, dans cet ordre. Implémente chaque structure une fois, pour savoir pourquoi les recherches dans une std::unordered_map se font en temps constant en moyenne et pourquoi une std::map garde ses clés triées, puis utilise la STL partout ensuite. En compétition comme en entretien, personne n'attend un arbre rouge-noir écrit à la main ; on attend que tu choisisses le bon conteneur et que tu connaisses son coût.
C++ ou Python pour le DSA ?
C++ si tu comptes faire de la programmation compétitive ou passer des entretiens où il est attendu ; Python si tu veux le chemin le plus court entre l'idée et un code qui marche. Les algorithmes sont identiques, et beaucoup apprennent donc dans l'un et concourent dans l'autre. Chaque cours de structures de données de ce parcours est enseigné dans les deux.
Quels cours de ce parcours ne sont pas enseignés en C++ ?
Deux : la programmation dynamique et la série d'entretiens en Python, toutes deux enseignées en Python. Elles figurent après les étapes, avec un lien qui les ouvre en Python. Les idées se transposent telles quelles : en C++, une table de mémoïsation est un std::vector ou une std::unordered_map.
Faut-il connaître C++ avant de commencer ce parcours ?
Au minimum les classes, les pointeurs, les références et std::vector. Si c'est nouveau pour toi, le cours C++ de Coddy les couvre d'abord, gratuitement, et ce parcours prend le relais là où il s'arrête.