哈希表的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

以上就是最常用的哈希表的相关操作

posted @ 2026-01-18 13:58  暗神酱  阅读(2)  评论(0)    收藏  举报