Вместо примера, приведенного в предыдущем посте ...
MapType::iterator it = the_map.find ("new_key");
// Does not exist.
if (it == the_map.end()) {
the_map.insert (std::make_pair ("new_key", 10));
}
, который делает два обхода дерева, используйте ...
pair<MapType::iterator, bool> rc = the_map.insert(make_pair("new_key", 0));
if (rc.second)
rc.first.second = 10;
Таким образом, вы выполняете один обход дерева, и у вас есть готовый итератор для выполнения других задач.