advanced algorithm beginner c++11 c++14 c++17 c++20 c++23 classes containers files intermediate math memory strings vector