void OIDTree::remove_subtree(OID root_oid) { _map_lock.lock(); // Create a temporary copy, to avoid iterating over the map we're // deleting items from. OIDMap tmp_oidmap = _oidmap; for(OIDMap::iterator it = tmp_oidmap.begin(); it != tmp_oidmap.end(); ++it) { OID this_oid = it->first; if (root_oid.subtree_contains(this_oid)) { _oidmap.erase(this_oid); } } _map_lock.unlock(); }