【发布时间】:2016-10-10 08:05:22
【问题描述】:
我想在 C++ 中实现 hashtabe 的线性探测,但是键、值 pair 将是通用类型,例如:vector >(其中 key,value 是通用类型)。
现在,在线性探测中,如果某个单元格被占用,我们会遍历向量,直到找到一个空单元格,然后将新的对放入该单元格中。
问题是,在泛型类型中,我如何能够检查特定单元格是否被占用? 我不能使用这些条件:
if(key == '\0')//As key is not of type string
或
if(key == 0)//As key is not of type int
那么,如何检查向量中的特定单元格是否为空? 如果我误解了这个概念,请纠正我。
【问题讨论】:
-
您可以专门化包含该代码的函数。
-
您可能需要另一个知道自己是否为“空”的数据结构。
-
但是我怎样才能专门化这个功能呢?
-
将一个额外的标志与单元格相关联,最好作为一个压缩的位数组。
-
你不能。有些事情 C++ 不允许你做。您当然可以构建一个并行的标志数组,但这并不能真正回答问题。您只能要求您的模板类型支持某种描述的“isnull”方法,然后代码不是通用的。
标签: c++ templates hashtable linear-probing