当前位置: 首页 > news >正文

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

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

http://www.jsqmd.com/news/262979/

相关文章:

  • 自动售货机(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • [Vulkan 实战] 深入解析 Dynamic Uniform Buffers:高效绘制多物体的利器
  • 基于PLC自动门控制系统设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 我国农产品标准化的对外贸易效应分析(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 互联网大厂Java求职面试实战:涵盖Spring Boot、微服务与AI技术的全栈问答
  • 基于MVC模式的在线书店的设计与实现(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【气动学】基于短程攻击导弹的最短时间约束并解决策梅洛问题附Matlab代码和报告
  • 基于PHP的新闻发布系统的设计与开发(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于三菱PLC的电烤箱温度系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 谁是 2026 微振动控制领域领军者?三大企业对比为何恒帆实力领跑
  • 2026国产时序数据库全景图:多模融合破局,企业选型实战指南
  • (77页PPT)DG1145产品质量的源头华为是如何进行需求管理的(附下载方式)
  • 自监督学习让医疗视频分析准确率翻倍
  • 收集自己的每日消费类型(餐饮,购物,娱乐),统计每周各类型的消费时长,输出消费结构优化建议
  • 如何借助AI写好论文中的“前人工作”与“现有问题”?用ChatGPT提供全新思路颠覆认知,实测有效,直接使用
  • 散热效率提升80%!3D VC如何解决AI算力“发热危机”?
  • leetcode 884. Uncommon Words from Two Sentences 两句话中的不常见单词
  • vue.js中如何集成WebUploader实现大文件分片上传源码?
  • SpringAI实践-MCP使用
  • leetcode 883. Projection Area of 3D Shapes 三维形体投影面积-耗时100
  • 400w微型逆变器, 基于stm32g474实现 设计方案,不是成品 带有源代码、原理图(AD...
  • 也许是集合幂级数
  • 基于SpringBoot的粮仓管理系统毕设
  • 【后端】【Java】一文详解Spring Boot RESTful 接口统一返回与异常处理实践 - 详解
  • Spring Boot 3 + GraalVM Native Image 原理:从启动 10秒 到 0.05秒,AOT 编译到底干了什么? - 详解
  • SpringAI实践-MCP使用与创建
  • 基于SpringBoot的进销存系统毕设
  • 2026年知名的翻译企业,天使翻译公司口碑与实力并存 - 工业品牌热点
  • Python、CSharp、Go、Nextjs,不同框架的性能到底差多少?
  • 芯片制造企业如何利用百度WEB编辑器处理PDF技术文档?