Пробовал повышение: любое ?
Для ваших типов событий, почему вы используете строку?
std :: maps хранятся отсортированными от нижнего к верхнему значению ключа.
Это означает, что внутри вы будете сортировать строки.
Постарайтесь сделать это как можно проще для начала. Используйте перечисление, которое должно сделать ваши карты намного быстрее, особенно если учесть, что они станут основой системы уведомлений.
Наконец, вы не хотите использовать char *, потому что карта не будет работать так, как вы ожидаете:
char* key1 = "Hi";
char* key2 = "Hi";
unsigned int id;
std::map< char* ,unsigned int > mymap;
mymap.insert( std::pair<char*,unsigned int>( key1, id ) );
mymap.insert( std::pair<char*,unsigned int>( key2, id ) ); //you've just created a duplicate entry
Причина в том, что key1 и key2 будут иметь разные адреса, даже если они представляют собой одну и ту же строку.