STL MAP should use find() or [n] identifier to find element in map?
c++, dictionary, stl, upperbound
Solution
Using `find` means that you don't inadvertently create a new element in the map if the key doesn't exist, and -- more importantly -- this means that you can use `find` to look up an element if all you have is a constant reference to the map.
That of course means that you should check the return value of `find`. Typically it goes like this:
void somewhere(const std::map<K, T> & mymap, K const & key)
{
auto it = mymap.find(key);
if (it == mymap.end()) { /* not found! */ }
else { do_something_with(it->second); }
}
Problem
I am confused which is more efficient? As we can access map directly, why do we need to use find? I just need to know which way is more efficient. ``` #include <iostream> #include <map> using namespace std; int main () { map<char,int> mymap; map<char,int>::iterator it; mymap['a']=50; mymap['b']=100; mymap['c']=150; mymap['d']=200; //one way it=mymap.find('b'); cout << (*it).second <<endl; //another way cout << mymap['b'] <<endl; return 0; } ``` thanks in advance! :)