哈希表
头文件
#include<unordered_map>
语法
unordered_map<elemType_1, elemType_2> var_name
如:
unordered_map<int,int> hashtable;
常用函数
1、添加元素
1)hash[2] = 4;
2)hash.insert({1,2});
2、begin( )函数
该函数返回一个指向哈希表开始位置的迭代器
//申请迭代器,并初始化为哈希表的起始位置
unordered_map<int, int>::iterator iter = hash.begin();
3、end( )函数
作用于begin函数相同,返回一个指向哈希表结尾位置的下一个元素的迭代器
4、查找函数
1)find( ):以key作为参数寻找哈希表中的元素,如果哈希表中存在该key值则返回该位置上的迭代器,否则返回哈希表最后一个元素下一位置上的迭代器。
2)at()函数:根据key查找哈希表中的元素
// 查找target
auto it = hash.find(target);
if(it != hash.end())//查找成功
{
return it->second;//返回下标
}
else
{
return -1;//查找失败
}
5、size()函数
返回哈希表的大小
6、删除函数
1)erase()函数:删除某个位置的元素,或者删除某个位置开始到某个位置结束这一范围内的元素, 或者传入key值删除键值对
unordered_map<int, int> hmap{ {1,10},{2,12},{3,13} };
unordered_map<int, int>::iterator iter_begin = hmap.begin();
unordered_map<int, int>::iterator iter_end = hmap.end();
hmap.erase(iter_begin); //删除开始位置的元素
hmap.erase(iter_begin, iter_end); //删除开始位置和结束位置之间的元素
hmap.erase(3); //删除key==3的键值对
2)clear()函数:清空哈希表中的元素
7、empty()函数
判断哈希表是否为空,空则返回true,非空返回false
8、哈希表的遍历: 通过迭代器遍历
unordered_map<int,int> = hash({1,2},{3,4},{5,6})
unorder_map<int,int>::itertor begin = hash.begin();
for(; begin != hash.end(); begin++)
{
cout<< begin->first<< " "<< begin->second<< endl;
}