C++ é bom para estruturas de dados e algoritmos?
É a escolha mais comum na programação competitiva e uma escolha forte para entrevistas: é rápido e tem uma biblioteca padrão que cobre quase todas as estruturas de que você precisa. O preço é mais código e mais jeitos de errar, de ponteiros pendentes a iteradores invalidados. Construir as estruturas você mesmo primeiro, como esta trilha faz, é o que faz esses problemas deixarem de ser surpresa.
Quais contêineres da STL correspondem a quais estruturas de dados?
std::vector é um array dinâmico, std::stack e std::queue são, por padrão, adaptadores sobre std::deque, std::list é uma lista duplamente ligada, std::unordered_map e std::unordered_set são tabelas hash, std::priority_queue é um heap binário (um max-heap por padrão, ao contrário dos de Python e Java), e std::map e std::set são árvores binárias de busca balanceadas, na prática árvores rubro-negras. Não existe contêiner de trie nem de grafo; esses você escreve.
Devo implementar as estruturas de dados eu mesmo ou só usar a STL?
As duas coisas, nessa ordem. Implemente cada estrutura uma vez, para saber por que as buscas em std::unordered_map levam tempo constante em média e por que std::map mantém as chaves ordenadas, e depois use a STL em todo lugar. Numa competição ou numa entrevista, ninguém espera uma árvore rubro-negra escrita à mão; esperam que você escolha o contêiner certo e saiba quanto ele custa.
C++ ou Python para DSA?
C++ se você pretende fazer programação competitiva ou entrevistas em que ele é esperado; Python se você quer o caminho mais curto da ideia até um código que funciona. Os algoritmos são idênticos, então muita gente aprende em uma e compete na outra. Todos os cursos de estruturas de dados desta trilha são ensinados nas duas.
Quais cursos desta trilha não são ensinados em C++?
Dois: programação dinâmica e a série de entrevistas em Python, ambos ensinados em Python. Os dois aparecem listados depois dos passos, com um link que os abre em Python. As ideias se transferem sem mudança: em C++, uma tabela de memoização é um std::vector ou um std::unordered_map.
Preciso saber C++ antes de começar esta trilha?
Classes, ponteiros, referências e std::vector, no mínimo. Se isso for novidade, o curso de C++ da Coddy cobre esses temas primeiro, de graça, e esta trilha continua de onde ele termina.