Witam,
Mam taki kawałek pseudo-kodu:
void foo()
{
MyCounter mc;
for(i=0; i < n; i++)
{
//..
mc.inc(CHARPTR_HASH("io_cnt"));
}
std::cout << "total: " << mc.get(CHARPTR_HASH("io_cnt")) << endl;
}
Obecnie klasę MyCounter mam opartą na std::map<string, int> i wymaga to tworzenia std::string przy każdym wywołaniu tej klasy. A użycie static std::string za bardzo komplikuje kod.
Problem:
Jak zdefiniować CHARPTR_HASH tak, aby w czasie kompilacji makro to (szablon, whatever) zamieniało podany łańcuch na int-a.
Oczywiście nie interesuje mnie użycie std::string, chyba że nie byłoby tworzone wielokrotnie w pętli for.