1) make it map<string, int>. You will get ability to print 80 using "A+" but lose ability to print A+ using 80
2) Find element with needed value using standard algorithm or write one yourself. O(n), you might be better with just vector of pairs
3) After filling your map, generate another map with key-value pairs inverted.
4) Use boost::multi_index_containerhttp://www.boost.org/doc/libs/1_56_0/libs/multi_index/doc/examples.html#example4