Как сказал Дьюфи, с приведенным вами примером, это не имеет значения, поскольку int является встроенным типом и будет копироваться по значению, но с char * это немного отличается ...
Если бы у вас было
std::map<char *, int> map;
Тогда вы не можете вставить переменную, объявленную как const char *, произойдет сбой
char * y = new char[4];
const char * x = "asdf";
std::map<char *, int> map;
map.insert(make_pair(y, 4)); //ok
map.insert(make_pair(x, 4)); //fail
с
std::map<char*, int> map;
Вы действительно можете сказать
char * x = new char[1];
(*x) = 'a';
map<char*,int>::iterator it = map.begin();
cout<<it->first; //prints 'a'
(it->first)[0] = 'x'
cout<<it->first; //prints 'x'
с
std::map<const char *, int>
вы будете ограничены использованием
map<const char*, int>::iterator