面试题答案
一键面试#include <iostream>
#include <map>
#include <string>
std::string findValueInMap(const std::map<int, std::string>& myMap, int key) {
auto it = myMap.find(key);
if (it != myMap.end()) {
return it->second;
}
return "";
}
在关联容器std::map
中,使用begin()
定位起始位置后,若要优化查找过程,一般不直接使用begin()
迭代器逐个遍历查找。因为std::map
是基于红黑树实现的,具有自动排序功能。find()
成员函数利用了这一特性,其时间复杂度为$O(log n)$,相比从begin()
开始线性遍历(时间复杂度为$O(n)$)要高效得多。它通过比较键值在树结构中进行快速定位,从而能更快地找到目标键值对。而如果从begin()
开始逐个迭代查找,会丧失这种基于排序结构的优化优势,效率会大大降低。所以应优先使用find()
函数来查找特定键值对应的元素。