STL ASSOCIATIVE CONTAINERS * hash tables * unordered containers STL ALGORITHMS CALLBACKS * function pointers * lambda expression - capture block, context, capture variables * functors * predefined functors: arithmetic, comparison, logical * function adapters(binders) * using above constructs to form callbacks with examples of find_if, generate, for_each, two forms of accumulate * std::function CATEGORIES (go deep there, you need to be familiar with all the algorithms that we studied) * utility * non-modifying * modifying - remove-erase idiom - source and target range * sorting * set ENHANCED ITERATOR FUNCTIONS - iterator movement - reverse iterators - why? inserter vs. inser iterator, back and front insert DESIGN PATTERNS * singleton - motivation (why use the pattern) - static features - atexit() - forbidding object copying: delete vs. making private - idioms vs. design patterns vs. frameworks - singleton meyers vs. classic implementation * template method - motivation - overloading vs. overriding - virtual function implementation and use - override and final - pure virtual functions and abstract classes - virtual destructors - constructor delegation - primitive vs. hook operations - template method function * abstract factory - motivation - abstract vs. concrete objects - factory and factory method - abstract vs. concrete factory, abstract vs. concrete method * bridge - motivation - delegation - static, dynamic, reinterpret and const casting - body vs. handle, abstract and concrete body and handle