哈希表是一种映射,存放key和value。可以参考博客1和博客2
1.力扣中的申明:
unordered_map <int,int> m; //<>中的是key和value的数据类型
2.一般语法
map.find(要找的值) //找到,返回key;没找到,返回.end()
map.end() //最后一个元素的后一位 相当于空值吧
map.count(key) // unoedered_map 不允许使用count计数,
//如果有key,返回1;没有key,返回0
map.empty() //空,返回1;不空,返回0
auto遍历
for (auto &a : map){
a.first //key
a.second //value
}
插入元素(力扣中的代码)
1.insert
for(int i=0;i<nums.size();i++)
a.insert(map<int,int>::value_type(nums[i],i));
//这里的value_type不知道是啥
//先插入再遍历时需要判断元素是否重复!!
2.for循环返回map中
我一般喜欢用for循环插入,一开始接触哈希表看到a[nums[i]]=i
不要有固定思维就是这么搞,key值是可以更改的,因为哈希表是自定义的一种映射。
for(int i=0;i<nums.size();i++)
{
if(a.count(target-nums[i])>0)
{
b[0]=a[target-nums[i]];
b[1]=i;
break;
}
a[nums[i]]=i;//反过来放入map中,用来获取结果下标
}
//这种先判断再插入元素的方法不需要判断是否重复,因为插入的值经过了判断在插入前肯定不在表中!!