一、hash_map、unordered_map
内部结构:都是采用哈希表实现的。
区别:由于在C标准库中没有定义散列表,标准库的实现提供了一个名为hash_map的非标准散列表。而从C++11开始,哈希表已经添加到C标准库中,决定对类使用备用名称unorder_map。
unordered_map使用
#include <unordered_map>
//取得键和值:
unordered_map<int, int> hash;
unordered_map<Key,T>::iterator it;//迭代器
it->first; // same as (*it).first (the key value)
it->second; // same as (*it).second (the mapped value)
简单例子
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};
源码解析