尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

QHash

QHash
📅 发布时间:2026/6/21 5:44:48

差不多相等于C# Directory

QHash 是 Qt 框架提供的一个模板类,它是一个基于哈希表的字典(键值对)容器。你可以把它理解成 C++ 标准库中的 std::unordered_map。

核心特性:

  1. 键值对存储:它存储的是成对的数据,一个作为键,一个作为值。通过“键”来快速查找、访问对应的“值”。

  2. 极快的查找速度:这是 QHash 最主要的特点。无论 QHash 里面有多少数据,其查找、插入和删除的平均时间复杂度都是 O(1)(常数时间)。这比 QMap 的 O(log n) 要快。

  3. 无序性:QHash 中的元素是不按任何特定顺序存储的(既不是按键排序,也不是按插入顺序)。当你遍历一个 QHash 时,元素的顺序是不确定的。

  4. 要求键类型可哈希:要作为 QHash 的键,该类型必须有一个全局的 qHash() 函数,用于计算其哈希值。Qt 已经为常见类型(如 int、QString、QByteArray 等)提供了 qHash() 函数。

基本用法

 // 排列顺序是【无序】

创建

 //创建一个QHash,键是QString,值是intQHash<QString, int> hash;

//插入数据

    //插入数据/*QHash<Key, T>::insert方法的返回值是一个指向新插入键值对或者已存在键的更新后键值对的迭代器(QHash<Key, T>::iterator)*/hash["apple"] = 10;hash.insert("banana", 20);auto it = hash.insert("orange", 15);//返回该元素的迭代器qDebug() << "Inserted - Key:" << it.key() << "Value:" << it.value(); // 输出:Inserted - Key: 

// 通过键访问值

 // 通过键访问值
qDebug() << "Apple count:" << hash["apple"];// 输出: Apple count: 10qDebug() << "banana count:" << hash.value("banana");// 输出: Banana count: 20//如果没有这个键值,则是0qDebug() << "banana count:" << hash.value("banana1");// 输出: Banana count: 0
 {QHash<int,QString> QHansQString;QHansQString.insert(0, "12");qDebug() << "string:" << QHansQString.value(0);// 输出:12qDebug() << "string:" << QHansQString.value(1);// 输出:""QString str = QHansQString.value(1);// 输出:""}

    // 检查是否包含某个键

 // 检查是否包含某个键bool IsExist = hash.contains("orange");bool IsExist1 = hash.contains("orange1");

// 遍历 (顺序是不确定的!)

  // 遍历 (顺序是不确定的!)QHash<QString, int>::const_iterator i;for ( i = hash.constBegin(); i !=hash.constEnd(); i++){qDebug() << i.key() << ":" << i.value();}//第一次输出/* "apple" : 10"orange" : 15"banana" : 20*/
/*  第二次输出"apple" : 10"banana" : 20"orange" : 15*/

 //数量

    //数量int QHashCount = hash.count();//结果是:3

 //删除一个键值对

 //删除一个键值对
// QHash<Key, T>::remove()方法的返回值是一个整数(int),表示实际从哈希表中删除的键值对的数量int returncode=  hash.remove("apple");//键存在 1  成功删除了与该键关联的单个键值对。//键不存在 0  哈希表中未找到指定的键,没有进行任何删除操作。int returncode1 = hash.remove("apple1");

   //清除所有

 //清除所有
 hash.clear();int QHashCount1 = hash.count();//结果是:0

 

相关新闻

  • 2025年超声波材料乳化分散仪工厂权威推荐榜单:超声波乳化分散机/超声波乳化分散系统/超声波石墨烯分散机源头厂家精选
  • 自适应分类的可落地规模化政府部门数据分类分级解决方案
  • 2025的留学机构哪家好

最新新闻

  • 小程序安全通信机制深度解析:从签名算法到逆向分析实践
  • vLLM+llama-factory本地部署实战:生产级LLM落地操作手册
  • GLM-5.1开源实战:本地部署、量化推理与VS Code集成指南
  • 嵌入式开发板电压与时钟配置:从原理到实战排查指南
  • 终极FGO自动化战斗解决方案:Fate/Grand Automata深度使用指南
  • Hermes本地AI Agent架构升级实战:模块化、持久化与沙箱化

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号