map, set, multimap, and multiset
上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:
插入: O(logN)
查看:O(logN)
删除:O(logN)
hash_map, hash_set, hash_multimap, and hash_multiset
上述四种容器采用哈希表实现,不同操作的时间复杂度为:
插入:O(1),最坏情况O(N)。
查看:O(1),最坏情况O(N)。
删除:O(1),最坏情况O(N)。
对于线性探测法解决哈希冲突的散列表,当有k个关键字的哈希值相同时,需要进行一系列的探测来找到可用的槽位。
在线性探测法中,当发生哈希冲突时,会依次检查下一个槽位,直到找到一个空槽位来存储关键字。因此,在这种情况下,第一个关键字不需要进行探测,但后续的k-1个关键字需要进行探测。
探测的次数可以看作是一个等差数列,其中首项为1,公差为1,末项为k-1。根据等差数列求和公式,可以得到探测的总次数为:
S = (k-1) * (1 + (k-1)) / 2 = k(k-1) / 2
因此,至少需要进行 k(k-1)/2 次探测来将这k个关键字存入散列表中,以确保它们不发生冲突并找到可用的槽位。