Problem with contains is we are now going to see more code like
if (map.contains(foo)) {
bob(map[foo]);
}
over the (vastly uglier) more efficient: if (auto it = map.find(foo); it != map.end()) {
bob(*it);
}
Of course languages like C# manage this in a more elegant way with out parameters declarable at the call site.