stlmp

Code

Implementation of data structures and algorithms in C++, like the Standard Template Library (STL). Tests written using googletest, using the template bast/gtest-demo.

Implementation tree

src
├── algorithms
│   └── flood_fill.hpp           # flood fill algorithm
├── disjoint_set
│   └── disjoint_set.hpp         # disjoint set implementation
├── graph
│   ├── adjacency_list.hpp       # graph implementation with adjacency list
│   ├── adjacency_matrix.hpp     # graph implementation with adjacency matrix
│   └── topological_sort.hpp     # topological sort (adjacency list)
├── heap
│   └── heap.hpp                 # heap implementation
├── linked_list
│   ├── dll.hpp                  # doubly linked list
│   └── ll.hpp                   # singly linked list
├── main.cpp                     # ignore this file
├── queue
│   └── queue.hpp                # queue implementation
├── sorting
│   ├── bubble.hpp               # bubble sort
│   ├── insertion.hpp            # insertion sort
│   ├── merge.hpp                # merge sort
│   ├── quick.hpp                # quick sort
│   ├── radix.hpp                # radix sort
│   ├── selection.hpp            # selection sort
│   ├── heap.hpp                 # heap sort
│   └── shell.hpp                # shell sort
├── search
│   ├── binary.hpp               # binary search
│   └── fibonacci.hpp            # fibonacci search
├── stack
│   └── stack.hpp                # stack implementation
└── tree
    ├── bst.hpp                  # general tree implementation
    ├── segment_tree.hpp         # segment tree implementation
    └── tree.hpp                 # binary search tree

Building

  • Install C++17 $ sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test $ sudo apt-get update -qq $ sudo apt-get install g++-6 $ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 90
  • Run build script $ ./build.sh
  • If there are any changes in the code and you need to build again, run the second script.

    $ ./build_after_cmake.sh
    

    Plan

    You can take a look at the implementation plan here

License

MIT