C++ STL Useful Templates
List of Data Structures
- Arrays
- Stacks
- Queues
- Hash Maps
- Linked List
- Trees
- Binary/N-ary Trees
- Binary Search Trees
- Heaps/ Priority Queues
- Advanced Data Structures
- Trie
- Segment Trees
- Fenwick (Binary Indexed Trees)
- Suffix Trees
- Suffix Arrays
- Disjoint Set Union
List of Algorithms
- Searching
- Linear Search
- Binary Search
- Ternary Search
- Sorting
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Counting Sort
- Radix Sort
- Heap Sort
- Bucket Sort
- Bit Masking Manipulation
- Greedy Algorithms (Example)
- Graphs
- Graph Representation
- Breadth First Search
- Depth First Search
- Minimum Spanning Tree
- Shortest path Algorithms
- Flood Fill Algorithms
- Articulation Points and Bridges
- Biconnected Components
- Strongly Connected Components
- Topological Sort
- Hamiltonion Path
- Maximum Flow
- Minimum Cost Maximum FLow
- Min-cut
- String Algorithms
- Basics of STring Manipulation
- String Searching
- Z Algorithm
- Manachar's Algorithm
- Dynamic Programming
- Introduction to DP
- 2 Dimensional
- State Space Reduction
- Dynamic Programming and Bit Masking
Math Algorithms
- Number Theory
- Basic Number Theory - 1
- Basic Number Theory - 2
- Primality Tests
- Totient Function
- Combinatorics
- Basics of Combinatorics
- Inclusion-Exclusion
- Geometry
- Line Sweep Technique
- Line Intersection using Bentley Ottmann Algorithm