This is a personal C++ library for various ideas, including useful data structures, reimplementations of things in other libraries, template metaprogramming, and more. For now, it is something for learning advanced C++ features and possibly something that can be useful in other personal projects.
The header files can be copied into other projects for use. Currently, backward compatibility is not guaranteed as it is in well established libraries. Everything is written only to compile with GCC using C++23.
- 2d arrays (square/rectangular/triangular)
- hash/tree set/map with designated empty value
- hash tables with open address / chaining
- balanced trees (red black, avl)
- b/b+ trees
- array set/map (to have the option for being slow)
- disjoint sets
- graph (adjacency list/matrix/set)
- trie (prefix tree)
- interned string (and possibly other types)
- generic interned type
- segment tree
- fenwick tree (binary indexed tree)
- bloom filter
- circular list
- thread safe data structures
- sorting algorithm library (including parallel algorithms)
- n-ary heaps
- quad/oct trees
- priority queue (with random access to any element)
- data structures that remember insertion order
- custom memory allocators
- file system level RAID
- tools for multithreading
- filesystem library
- compressed archive library
- file formats like csv, tsv, json, yml
- output formatting stuff
- arbitrary precision arithmetic
- math functionality
- larger fixed size integers (signed and unsigned)
- larger fixed size floats (ieee and use multiple of an ieee type)
- statistics
- linear algebra
- linear optimization
- nonlinear optimization