Set 可以比 Hashtable 更快吗?

问题描述

集合通常被实现为哈希表,其中键是集合成员,值是一些常量(真或其他东西)。 由于哈希表是集合的泛化,因此可以更快地实现集合,但是有更快的实现吗?也许这种实现根本不是基于哈希表?或者可能是这样,但以其他方式进行了优化?

解决方法

没有容器的“速度”这样的东西。每个容器都支持一些操作,每个操作都有其复杂性和首选用例。有些容器适合连续读取,有些适合随机访问,有些适合插入,有些适合追加,等等。在开始询问哪种容器实现最适合您的用例之前,您需要描述这个用例。如果我们甚至不知道这个用例是什么,没有人会说哈希表是否最适合您的情况。

如果有一个容器在每种情况下都是最好的,我们都会使用它,而不会有其他容器。

话虽如此,我建议您不要尝试优化标准库容器。很有可能,它们足以满足您的需求,而无需额外干预。如果结果证明您的应用程序太慢,并且分析表明容器是确切的问题,则应该在最后完成优化。通常不是。