A learning-focused collection of C++ sub-projects built during the 3rd year of University studies. Each sub-project covers a different area of modern C++: data structures, memory management, smart pointers, and algorithms — all implemented from scratch without relying on the standard library equivalents.
The solution is a single Visual Studio .slnx workspace (Project_zero.slnx) containing five projects that can be built together.
| Project | Description | README |
|---|---|---|
| ADT | Abstract Data Types — linked lists, trees, maps, hash tables, thread-safe containers | ADT/ADT_README.md |
| Allocator | Custom memory allocators — pool, monotonic, stack, segregated, debug | Allocator/Allocator_README.md |
| My_algorithms | Sorting and searching algorithms with async/multi-threading support | My_algorithms/My_algorithms_README.md |
| Smart_ptr | Custom smart pointers built as a DLL — Auto, Unique, Shared, Weak | Smart_ptr/Smart_ptr_README.md |
| Testing | Console test runner that exercises all of the above | Testing/Testing_README.md |
| Tests | GoogleTest unit test suite (260 tests) covering every sub-project above | TESTS_README.md |
The project has a dedicated GoogleTest suite of 260 unit tests, all passing, covering every sub-project:
| Test file | Module | Covers | Tests |
|---|---|---|---|
allocator_test.cpp |
Allocator | Pool, Monotonic, Stack, Segregated, Debug allocators | 31 |
smart_ptr_test.cpp |
Smart_ptr | Unique_ptr, Shared_ptr, Weak_ptr, make_unique/make_shared | 38 |
algorithms_test.cpp |
My_algorithms | Linear/Binary search, Selection/Bubble/Insertion/Quick sort | 35 |
adt_sequence_test.cpp |
ADT | Forward_list, List, Deque, Vector(+bool), Stack, Queue | 58 |
adt_tree_map_set_test.cpp |
ADT | Binary_tree, Map, Multimap, Set, Multiset | 44 |
adt_hash_test.cpp |
ADT | Hash_table, Unordered_map/multimap/set/multiset | 29 |
adt_concurrent_test.cpp |
ADT | Thread_safe, Concurrent_hash_table, Concurrent_unordered_map/set (+ multi-thread stress tests) | 25 |
Total: 260/260 passing — verified on both g++ 13 (Linux, C++20) and MSVC (Windows, C++20). The concurrent tests were additionally verified under ThreadSanitizer with no data races detected.
While writing the tests, two real bugs were found and fixed in the library code itself (not in the tests):
Map::merge()/Set::merge()inADT.hsilently dropped elements with duplicate keys instead of leaving them in the source container, asstd::map::merge/std::set::mergedo.- Cross-instantiation private member access in
Allocator.h'soperator==forPool_allocator,Monotonic_allocator,Stack_allocator,Segregated_allocator, andDebug_allocator— GCC accepted it leniently, but MSVC correctly rejected it (C2248). Fixed by routing comparisons through the existing public accessors instead of touching private fields directly.
See TESTS_README.md for build instructions, detailed coverage notes, and the bugfix diffs.
Pre-built x64 Release binaries. No compilation needed — just download and run. All files are attached to the Latest Release →
| File | Download | Description |
|---|---|---|
ADT.lib |
⬇ Download | Static library for abstract data types |
Allocator.lib |
⬇ Download | Static library for custom allocators |
My_algorithms.lib |
⬇ Download | Static library for algorithms |
Smart_ptr.dll |
⬇ Download | Dynamic library for smart pointers |
Smart_ptr.lib |
⬇ Download | Import library for linking against Smart_ptr.dll |
Testing.exe |
⬇ Download | Main test runner — run from a terminal or double-click |
Tests.exe |
⬇ Download | GoogleTest unit test suite (260 tests) — run from a terminal (Ctrl+F5-style, don't just double-click, see below) |
Note:
Smart_ptr.dllmust be placed in the same directory as any executable that uses it (includingTesting.exeandTests.exe). Note:Tests.exeis a console app — double-clicking it in Explorer will flash and close immediately once the tests finish. Run it from an already-open terminal (cmd/PowerShell) to see the results.
- Windows (MSVC / Visual Studio 2026 recommended)
- C++20 or later (
/std:c++20) - x64 platform target
- (optional, for running the
Testsproject) vcpkg withgtestinstalled — see TESTS_README.md
- Blogan — The C++ video course that served as the foundation and inspiration for this entire project. Huge thanks for making complex topics approachable.
- cppreference.com — The go-to C++ reference, used constantly throughout development.
This project is licensed under the MIT License.