是否有可能实现散列的实现,其中键为String,值为function。对于背景,我有一个程序,其中有很多字符串比较,即

if(strcasecmp(s,"london")==0)
   functionA();
else if(strcasecmp(s,"moscow")==0)
   functionB();
else if(strcasecmp(s,"delhi")==0)
   functionC();
  ...


等等。

但是(theta(n))这种实现非常昂贵,因为String比较是针对所有if语句完成的。如果我们有一个哈希实现,其中键是String并且值是function,我们可以调用类似

function = hash.Get("moscow");
function();


它的复杂度很好。

是否有可能做到这一点?

最佳答案

是否有可能实现散列,其中键为String
  价值是功能?


是。这是完全可行的。您可以使用指针或std::function进行操作。可能的容器可能是:


std :: unordered_map
boost :: unordered_map

10-06 13:27
查看更多