Skip to content

VSCRM/Project_zero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project_zero — C++ Advanced Practice Ecosystem

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.


Sub-projects

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

Unit Tests

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() in ADT.h silently dropped elements with duplicate keys instead of leaving them in the source container, as std::map::merge/std::set::merge do.
  • Cross-instantiation private member access in Allocator.h's operator== for Pool_allocator, Monotonic_allocator, Stack_allocator, Segregated_allocator, and Debug_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.


Releases / Ready-to-use Binaries

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.dll must be placed in the same directory as any executable that uses it (including Testing.exe and Tests.exe). Note: Tests.exe is 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.


Requirements

  • Windows (MSVC / Visual Studio 2026 recommended)
  • C++20 or later (/std:c++20)
  • x64 platform target
  • (optional, for running the Tests project) vcpkg with gtest installed — see TESTS_README.md

Credits & Thanks

  • 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.

License

This project is licensed under the MIT License.

About

C++ practice ecosystem: custom ADT, allocators, smart pointers and algorithms — built from scratch during university (C++20, MSVC, x64)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages