How can I construct a `std::map<std::string, Foo>` from a `std::vector<std::pair<std::string, Foo> >`? It seems the std::map can be constructed from a input iterator.

**UPDATE**

Incidentally, I need to convert the strings in the vector to their lower case forms when adding them to the map. This is because I wish to use the map to get a sorted version of whats in the vector.