Какие?
Data Structures and Algorithms, возможно, является одним из самых важных курсов в учебных программах по информатике и инженерии в университетах. По сути, курс подчеркивает способность понять проблему, придумать решение и оптимизировать его, используя инструменты в нашем распоряжении.
Обсуждение структур данных начинается с малого как способа представления данных различными способами в зависимости от контекста. По мере того, как мы продвигаемся по курсам, в смесь добавляются алгоритмы и внезапно появляются такие соображения, как:
- важность выбора правильной структуры данных для решаемой задачи,
- выбор правильного подхода к решению проблемы (подходы жадный, динамическое программирование, разделяй и властвуй и т. п.) и
- оптимизация нашего решения с точки зрения пространственной и временной сложности,
выдвигаются на первый план.
Почему?
В том же духе телеметрия — это попытка реализовать некоторые важные (и полезные) структуры данных и алгоритмы на C++. В частности, цели этого упражнения заключаются в следующем:
- Отточить свои навыки C++,
- Пересмотрите структуры данных и алгоритмы (и каждую их часть, которая вызывала у меня головную боль) и
- Надеюсь, реализовать библиотеку в объектно-ориентированном стиле и обобщить библиотеку с помощью шаблонов.
Дополнение от 19 мая 2020 г.:
Новые цели для этой библиотеки также включают:
- Реализация упрощенной версии STL.
- Создайте простой в использовании учебник для таких чайников, как я, и задокументируйте проблемы, с которыми я столкнулся, сомнения, которые у меня были, и полезные материалы для чтения, которые я нашел, все в одном месте.
Как?
Я надеюсь задокументировать свой прогресс в этом упражнении в серии статей. Поскольку я помешан на организации вещей (по крайней мере, мне нравится так думать), я постараюсь основывать каждую статью на общей теме или цели. В каждой статье я предприму разумное погружение в теоретический аспект вещей и дополню его практической реализацией.
Я отправлю весь код этого проекта на GitHub здесь:
Попутно я буду бубнить с комментариями о проблемах, с которыми я столкнулся, обо всем, что меня смутило или заставило застрять, и перечислю все, что я делал в Интернете, чтобы прояснить эти сомнения, так что не теряйте веру в меня на случай, если я буду идиотом в отношении чего-то очевидного. Спасибо!
Окей. Вот оно...
TL;DR
Вот краткий обзор каждой статьи из этой серии. Обновляется после каждого нового поста.
Связанные списки
Стеки
Телеметрия — дальнейшее развитие со стеками
Поскольку STL достаточно развит, я говорю о «контейнерах и адаптерах контейнеров и о том, как я их реализую… среда.com»