¿Es C++ bueno para estructuras de datos y algoritmos?
Es la opción más común en la programación competitiva y una opción sólida para entrevistas: rápido, con una biblioteca estándar que cubre casi todas las estructuras que necesitas. El precio es más código y más formas de equivocarse, desde punteros colgantes hasta iteradores invalidados. Construir primero las estructuras tú mismo, como hace esta ruta, es la forma de que dejen de sorprenderte.
¿Qué contenedores de la STL corresponden a qué estructuras de datos?
std::vector es un array dinámico, std::stack y std::queue son por defecto adaptadores sobre std::deque, std::list es una lista doblemente enlazada, std::unordered_map y std::unordered_set son tablas hash, std::priority_queue es un heap binario (un max-heap por defecto, a diferencia de los de Python y Java), y std::map y std::set son árboles binarios de búsqueda balanceados, en la práctica árboles rojo-negro. No hay contenedor de trie ni de grafo; esos los escribes tú.
¿Debo implementar yo mismo las estructuras de datos o usar directamente la STL?
Las dos cosas, en ese orden. Implementa cada estructura una vez, para saber por qué las búsquedas en std::unordered_map son de tiempo constante en promedio y por qué std::map mantiene sus claves ordenadas, y a partir de ahí usa la STL en todas partes. En un concurso o en una entrevista nadie espera un árbol rojo-negro escrito a mano; esperan que elijas el contenedor adecuado y conozcas su coste.
¿C++ o Python para DSA?
C++ si piensas hacer programación competitiva o entrevistas donde se espera que lo uses; Python si quieres el camino más corto de la idea al código que funciona. Los algoritmos son idénticos, así que mucha gente aprende en uno y compite en el otro. Todos los cursos de estructuras de datos de esta ruta se enseñan en los dos.
¿Qué cursos de esta ruta no se enseñan en C++?
Dos: la programación dinámica y la serie de entrevistas en Python, ambas enseñadas en Python. Aparecen después de los pasos, con un enlace que las abre en Python. Las ideas se trasladan sin cambios: en C++, una tabla de memoización es un std::vector o un std::unordered_map.
¿Necesito saber C++ antes de empezar esta ruta?
Como mínimo, clases, punteros, referencias y std::vector. Si son nuevos para ti, el curso de C++ de Coddy los cubre primero, gratis, y esta ruta continúa donde él termina.