chapter 10 exercise 10-2: reimplement median function so that is supports array, and can handle any arithmetic element type

when calling a template function, you can specify previous type
parameter explicitly, and let extra type parameters be implicit
chapter 10 exercise 10-4: implement a list that holds strings

Be able to expand the capacity through the usage of dynamic memory
allocation.
Support begin(),end(),push_back() member functions
Implement a destructor to free dynamically allocated memory