Implement a phone book in C++. You have a list of names and numbers and you can search by name, by prefix name, by number. New numbers and names can be added over time. A name can have multiple numbers associated and a number can have multiple names associated.
Optional: consider how to serialize the data structures, by using STL & Boost.