We covered a number of important things today, including:
1) Reviewing how iostreams work, specifically how cin and getline don't interoperate well with each other
2) Some of the most useful parts of the preprocessor, and why you'd use it
3) Templates (writing functions that take any type, or a limited range of types, as a parameter)
4) Unordered_maps again, this time with a static unordered_map so that it only creates the map once (at program launch) and then gives fast lookups for the rest of the run.