█
LastWrite
  • > Curriculum
  • > Pricing
  • > For Educators
  • > About
  • > Contact
Log InGet Started

Questions, concerns, bug reports, or suggestions? We read every message, write to us at [email protected].

More ways to reach us →
LastWrite

Structured computer science lessons for aspiring developers and security professionals.

[email protected]

(201) 785-7951

Mon–Fri, 9 AM–5 PM EST

Learn

  • Curriculum
  • Pricing

Company

  • About
  • For Educators & Schools
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
© 2026 LastWrite. All rights reserved.
Curriculum/Programming Languages/C++/Passion Project: C++ Data Structure Library
240 minAdvanced

Passion Project: C++ Data Structure Library

After this lesson, you will be able to: Build a C++ data structure library with hash map, linked list, and binary search tree, fully tested with Google Test or Catch2.

The C++ resume project. Implementing these from scratch proves you understand memory, templates, iterators, and modern C++ idioms.

Prerequisites:Build systems

Project brief

Build `mystl`, a tiny STL clone.

  1. 1

    Three containers, all templated:

  2. 2

    1. mystl::HashMap<K, V>, open-addressing or chaining

  3. 3

    2. mystl::LinkedList<T>, doubly-linked, with iterators

  4. 4

    3. mystl::BST<K, V>, binary search tree, in-order iterator

  5. 5

    Each must support:

  6. 6

    - Standard ops (insert, find, erase, size, empty)

  7. 7

    - Iterators that satisfy std::forward_iterator (or std::bidirectional_iterator for list)

  8. 8

    - Move semantics + copy semantics (Rule of Five)

  9. 9

    - noexcept where applicable

  10. 10

    - Tested with Google Test or Catch2, 90%+ line coverage

Milestones

Order matters, get one right before the next.

  1. 1

    Milestone 1: Project skeleton, CMakeLists, src/, include/, tests/. Set up Catch2 via FetchContent.

  2. 2

    Milestone 2: LinkedList<T>, insert/erase/iterator. Pass tsan + asan.

  3. 3

    Milestone 3: HashMap<K, V>, start with chaining (vector of LinkedList). Benchmark vs std::unordered_map.

  4. 4

    Milestone 4: BST<K, V>, recursive insert/find/erase. In-order iterator.

  5. 5

    Milestone 5: Test suite with edge cases (empty, single element, duplicates, large random inserts).

  6. 6

    Milestone 6: Add GitHub Actions CI, build on Linux/Mac/Windows with -Wall -Wextra -Werror.

  7. 7

    Milestone 7: README with architecture decisions, perf comparison, lessons learned.

💡 How to talk about this

INTERVIEW: 'I built mystl, a header-only C++20 library implementing HashMap, BST, and LinkedList with full STL-compatible iterators. ~90% test coverage with Catch2, tsan + asan clean in CI, benchmarked within 1.5x of libstdc++.' RESUME: 'mystl, open-source C++20 container library (GitHub). Templated, header-only, RAII-clean, CI on 3 platforms.' QUESTIONS to expect: How do you handle hash collisions? What's the complexity of your BST find? Why header-only? How did you test concurrent access?

Deployment

Publish to public GitHub. Make it `git clone`-able + buildable with `cmake -B build && cmake --build build && ctest --test-dir build`. Add badges: CI status, code coverage (codecov.io), license. Optional stretch: package for vcpkg or Conan.

Sign in and purchase access to unlock this lesson.

Sign in to purchase
←Build Systems: CMake
Back to C++
C++ Job Readiness→