Keys in einer Map ändern

Hallo,

ich habe eine std::map, da sind paar einträge drin, ca. 1000

nun will ich ich alle Elemente verändern, alle Werte + 2 und alle keys +3

Bisher mach ich das so:
std::map map2
for(std::map::iterator i=map.begin();i!=map.end();++i)
{
map2[i-\>first+3]=i->second+2;
}
map=map2;

Das muss doch schneller gehen, bzgl. Laufzeit?