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

QHash

差不多相等于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 已经为常见类型(如 intQStringQByteArray 等)提供了 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

 

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

相关文章:

  • Kafka 如何保证精确一次性消费?
  • 2025年山东租赁直臂升降车服务商权威推荐榜单:山东租赁直臂车公司/山东租赁柴油直臂车服务/山东租赁电动直臂车企业精选
  • python代码:ffmpeg.probe(视频路径) 出现系统找不到指定文件的问题处理办法
  • 2025年快餐桌椅供货厂家权威推荐榜单:烤肉桌椅/电动桌椅/中餐桌源头厂家精选
  • 2025年黄麻地毯行业十大品牌权威推荐榜单:环保家居新风向
  • 2025年超声波材料乳化分散仪工厂权威推荐榜单:超声波乳化分散机/超声波乳化分散系统/超声波石墨烯分散机源头厂家精选
  • 洛谷题单指南-组合数学与计数-P1313 [NOIP 2011 提高组] 计算系数
  • 如何部署一个HTML项目到 Vercel - 详解
  • 自适应分类的可落地规模化政府部门数据分类分级解决方案
  • 人工智能AI必备的5款开源软件推荐!
  • 构建数据库安全新范式:以规范为基石,实现精确与实时动态防护
  • 2025年原木整装定制定制厂家权威推荐榜单:定制整装/全屋定制整装/顶上整装定制源头厂家精选
  • 2025南京正规留学中介公司有哪些
  • 2025国内好的出国留学机构有哪些
  • 2025的留学机构哪家好
  • 2025常州有哪些留学中介
  • 2025 年最新推荐文创礼品厂家排行榜,国际权威测评认证!覆盖多场景定制的优质品牌综合实力推荐景区文创礼品 / 城市文创礼品 / 企业文创礼品 / 校园文创礼品 / 博物馆文创礼品公司推荐
  • 到家按摩服务平台有哪几家公司?国内主流平台盘点
  • 2025年36kv全绝缘环网柜企业权威推荐榜单:20kv充气环网柜/20kv全绝缘环网柜/环网开关柜源头厂家精选
  • AI降噪引领下的合规新格局——金融API风险监测系统全景实践
  • 使用appium inspector检查mumu安装模拟器中网易云阅读app元素
  • 2025常州出国留学中介机构哪家好
  • 以AI驱动的全周期合规治理,打造运营商数据安全平台新范式
  • Apache SeaTunnel 如何将 CDC 数据流转换为 Append-Only 模式?
  • 2025北京十佳留学中介
  • 锂电池充电管理IC 快充输入 2串3串4串锂电池快充芯片
  • makefile简单初探索_2 结合bsp
  • 2025年破碎格栅机生产厂家权威推荐榜单:回转式机械格栅/拦污格栅/机械格栅源头厂家精选
  • [GenAI] 重新认识Agent
  • 2025 年 11 月吹塑厂家权威推荐榜:吹塑,中空吹塑,吹塑制品/玩具,吹塑瓶/容器瓶/泡泡水瓶/机油瓶,洗发水/沐浴露/医药瓶/化妆瓶厂家精选