【问题标题】:Hash table where key is string and value is function in c++哈希表,其中键是字符串,值是 C++ 中的函数
【发布时间】:2014-03-09 00:03:03
【问题描述】:

是否可以实现散列,其中键为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(); 

它的复杂度很好(theta(log(1)))

可以这样做吗?

【问题讨论】:

  • std::map 是您要找的。​​span>
  • 或者std::unordered_map,如果复杂度应该是O(1)和散列O(m)

标签: c++ hash


【解决方案1】:

是否可以实现哈希,其中key是String 价值就是功能?

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

  1. std::unordered_map
  2. boost::unordered_map

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2013-03-13
    • 2013-04-07
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多