当前位置: 首页 > 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.rkmt.cn/news/54272.html

相关文章:

  • 2025年超声波材料乳化分散仪工厂权威推荐榜单:超声波乳化分散机/超声波乳化分散系统/超声波石墨烯分散机源头厂家精选
  • 自适应分类的可落地规模化政府部门数据分类分级解决方案
  • 2025的留学机构哪家好
  • 2025常州出国留学中介机构哪家好
  • Apache SeaTunnel 如何将 CDC 数据流转换为 Append-Only 模式?
  • 以AI驱动的全周期合规治理,打造运营商数据安全平台新范式
  • makefile简单初探索_2 结合bsp
  • 500美元权限控制漏洞:低权限用户可在开发者设置中执行受限操作
  • [GenAI] 重新认识Agent
  • 2025 年 11 月注塑厂家推荐排行榜,塑胶注塑,塑料注塑,注塑制品,精密注塑件公司推荐
  • 2025年电力标牌支架供货商权威推荐榜单:安全警示牌/杆号牌/交通标志牌源头厂家精选
  • 六、Agent设计模式与工程化 ——《动手学Agent应用开发》学习心得
  • 贪心方法与技巧总结
  • LLM应用剖析: AI对冲基金
  • 2025年冷库货架厂家综合实力排行榜TOP10权威发布
  • 2025年冷库货架品牌综合评测与选购指南:十大实力厂家权威排名
  • 无猫腻的到家按摩平台推荐,安心享受专业服务
  • 2025国内出国留学机构
  • 如何通过Python SDK获取Collection中已存在的Doc
  • AI养蛊:让钓鱼邮件和反钓鱼邮件系统打一架
  • lasso
  • 当下采购管理系统开发公司哪家可靠
  • 2025年11月岩心钻机供应商排行榜单精选
  • 2025年市场履带钻机供货厂家榜单Top5权威解析
  • 2025年岩心钻机供货商推荐排行榜单Top10
  • Openwrt-Ipv6设置(中继获取)
  • 2025瓷砖行业十大品牌终极推荐:聚焦耐磨防污核心性能,搭配全周期服务,打造省心装修体验
  • 2025 最新自动投篮机厂家推荐,智能自动投篮机源头厂家权威排行榜 便携可折叠 / 抛投式 / 分体式篮球训练器优质品牌精选
  • 2025 工业加热器厂家最新推荐排行榜:实力制造商深度解析,覆盖多场景加热设备优质解决方案
  • 树形结构转换工具类