# Class Introduction and STL Essentials ## Class Introduction Problem: C arrays are hard to manage and error prone Solution: Implement a `List` class in C++ Concepts: * constructor/destructor * new/delete syntax * member/method * getter/setter * resource management * lifetimes and scopes Limitations: * No templates so `int` only * No dynamic resizing * No operator overloading * No copy/move discussion * No `std::initializer_list` so set elements one by one ## STL Essentials Problem: Above mentioned limitations Solution: Use `std::vector<T>` Common STL tools: * `std::cout` (C++ stream) * `std::string` * `std::vector` * `std::shared_ptr`,`std::unique_ptr` ## How C/C++ Works * `.hpp`/`.cpp` files * definition/declaration * include guards * preprocessors(`#include`, `#ifdef`, `#define`) ## Encountered Problems * Copy constructor