C++ 哈希表,其中键是字符串,值是c++;
是否可以实现哈希,其中键是C++ 哈希表,其中键是字符串,值是c++;,c++,hash,C++,Hash,是否可以实现哈希,其中键是String,值是function。作为背景,我有一个程序,其中有很多字符串比较,即 if(strcasecmp(s,"london")==0) functionA(); else if(strcasecmp(s,"moscow")==0) functionB(); else if(strcasecmp(s,"delhi")==0) functionC(); ... 等等 但是这种实现非常昂贵,因为对所有if语句都进行了比较
String
,值是function
。作为背景,我有一个程序,其中有很多字符串比较,即
if(strcasecmp(s,"london")==0)
functionA();
else if(strcasecmp(s,"moscow")==0)
functionB();
else if(strcasecmp(s,"delhi")==0)
functionC();
...
等等
但是这种实现非常昂贵,因为对所有if语句都进行了比较。如果我们有一个hash实现,其中key是String
,value是function
,我们可以调用
function = hash.Get("moscow");
function();
它的复杂度很好(theta(log(1))
有可能这样做吗
是否可能有一个哈希的实现,其中键是String
价值就是功能
对。这是完全可行的。您可以使用指向函数的指针或std::function
。可能的容器可能是:
std::map
就是你要找的。或者std::unordered\u map
,如果复杂性应该是O(1)
和哈希O(m)
。