size_t instead of unsigned int

size_t is what the stdlib uses to define the size of various return
sizes. See www.embedded.com/electronics-blogs/programming-pointers/4026076/Why-size-t-matters
for more info.
Remove extra spaces
Use range-based for-loops
cout *this
Add Catalog and Combo .at methods
Fix make run
Add spacing