The ::value_type of the std::map/std::unordered_map containers is std::pair<const Key, T>.
Currently a lot of loops drop the const from the iterator which forces the compiler to create a copy, this should be avoided by using the auto keyword.
A better explanation can be found in Meyer’s Effective Modern C++.
https://books.google.de/books?id=rjhIBQAAQBAJ&lpg=PA41&ots=FmZL15vynY&pg=PA41#v=onepage&q&f=false