- on templates
- with copy/move constructors and assignment operators
- with inner class MapElement to represent a key-value pair (overloaded comparison operators)
- with custom forward iterators (iterator and const iterator)
- insertion (for key-value pair and separately)
- deletion
- find (returning either iterator or const iterator)
- iterators to begin and end
- size/empty
- print (overloaded output operator)
- overloaded operator[]
- comparison operators
- dereference operators
- preincrement and postincrement
- overloaded operator bool