【发布时间】:2015-07-28 17:16:16
【问题描述】:
我想做的是制作一个哈希表。为了提高效率,我希望它根据数据的类型以不同的方式工作。例如:int 的二次探测方法,string 的分离链接方法。
我发现我可以使用typeid()函数来比较模板的typename。我可以在类的定义中使用它,但我担心它会减慢程序的速度。
我觉得像“类重载”这样的东西可以解决这个问题。但我从未听说过“类重载”。你认为解决这个问题的正确方法是什么?
谢谢。
【问题讨论】:
-
使哈希表类本身成为一个模板,并根据需要对每种类型进行专门化(因为您已经决定要编写所有额外的特定于类型的代码)。老实说,可能会为自己节省一些时间,看看
std::unordered_map是否符合您的喜好。您最终可能会为自己节省大量工作。 -
@WhozCraig 谢谢你的建议,但不幸的是,我的任务的目的是在不使用 std::unordered_map 的情况下制作最快的哈希表ㅠ.ㅠ
-
"type traits" 是另一种根据特定类型选择实现的更细粒度的方法,可以与更大模板的特化结合使用。
标签: c++ templates hashtable overloading