哈希表的c++实现及其常用函数
代码示例:
include
include
include
include
include<unordered_map>
using namespace std;
int main()
{
//----------1.创建哈希表:键为String类型,值为int类型----------
unordered_map<string, int> hashTable;
//----------2.插入元素:三种常用方式----------
//插入数据方法一:下标插入,无则新增,有则覆盖
hashTable["语文"] = 98;
hashTable["数学"] = 99;
//插入数据方法二:insert+pair输入
hashTable.insert(pair<string, int>("英语", 92));
//插入数据方法三:c++11列表插入
hashTable.insert({ "物理", 89 });
//----------3.查找元素:两种常用方式----------
//查找元素方法一:下标查找,存在的话返回对应值,不存在则自动插入一个默认值为0的键值对
cout << "数学成绩:" << hashTable["数学"] << endl;
//查找元素方法二:find查找(推荐,安全),存在则返回迭代器,不存在则返回end()
auto iter = hashTable.find("英语");
if (iter != hashTable.end()) {
cout << "查找到英语成绩:" << iter->second << endl;
}
else
{
cout << "未查找到英语成绩。" << endl;
}
//----------4.修改元素----------
//修改元素方法一:直接通过下标进行修改,最简单高效
hashTable["语文"] = 99;
//修改元素方法二:通过迭代器进行修改
iter = hashTable.find("物理");
if (iter != hashTable.end())
{
iter->second = 91;
}
cout << "修改之后的语文成绩:" << hashTable["物理"] << endl;
//----------5.删除元素----------
//删除元素方法一:通过键进行删除,成功返回1,失败返回0
hashTable.erase("物理");
//删除元素方法二:通过迭代器进行删除
iter = hashTable.find("语文");
if (iter != hashTable.end())
{
hashTable.erase(iter);
}
//----------6.遍历哈希表----------
cout << "\n哈希表中剩余数据:" << endl;
//范围for循环实现
for (auto& pair : hashTable)
{
cout << "科目:" << pair.first << ",成绩" << pair.second << endl;
}
//----------7.常用成员函数----------
cout << "\n哈希表的元素个数:" << hashTable.size() << endl;
cout << "哈希表是否为空:" << (hashTable.empty() ? "是" : "否") << endl;
cout << "哈希表的桶数(哈希桶,底层结构):" << hashTable.bucket_count() << endl;
//----------8.清空哈希表----------
hashTable.clear();
cout << "清空后元素个数:" << hashTable.size() << endl;
system("pause");
return 0;
}
运行结果:
数学成绩:99
查找到英语成绩:92
修改之后的语文成绩:91
哈希表中剩余数据:
科目:数学,成绩99
科目:英语,成绩92
哈希表的元素个数:2
哈希表是否为空:否
哈希表的桶数(哈希桶,底层结构):8
清空后元素个数:0
以上就是最常用的哈希表的相关操作
浙公网安备 33010602011771号