C++中速度最快的动态容器查找实现是哪一种?
容器查找逻辑差异说明
std::vector本身没有内置的元素查找接口,要匹配特定值只能从容器首元素开始逐一遍历比对,最坏时间复杂度为O(n),n为容器内总元素数,需要走完所有元素才能确认未找到目标、或者匹配到末尾的目标元素。std::unordered_map基于哈希表实现,常规查找流程是先计算目标key的哈希值,直接定位到对应的存储桶位置,平均时间复杂度为O(1),性能远高于vector的遍历查找。两者的最坏查找逻辑是一致的:当出现极端哈希冲突,所有key的哈希结果都对应同一个存储桶时,unordered_map需要遍历该桶内的全部元素做匹配,此时最坏时间复杂度同样为O(n),和vector全量遍历的逻辑完全相同,都是线性遍历所有元素做值比对。
内容的提问来源于stack exchange,提问作者trshmanx
相关产品推荐
相关产品推荐

