QHash和QMultiHash使用
2024-10-16 16:55:17
版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:QHash和QMultiHash使用 本文地址:http://techieliang.com/2017/12/557/
本文标题:QHash和QMultiHash使用 本文地址:http://techieliang.com/2017/12/557/
1. 介绍
QHash<Key, T>是一个在哈希表中存储键值对的数据结构。它的接口几乎与QMap<Key,
T>相同,但是与QMap<Key, T>相比,它对ey的模板类型有不同的要求,而且它提供了比QMap<Key,
T>更快的查找功能。
The key type of a QMap must provide operator<(). The
key type of a QHash must provide operator==() and a global hash function
called qHash() (see qHash).
QMap需要提供operator<()。QHash<K,
T>中K的值类型还需要提供一个operator==(),并需要一个能够为键返回哈希值的全局qHash()函数的支持。Qt已经为qHash()函数提供了对整型、指针型、QChar、QString以及QByteArray。
QMultiHash类似于QMultiMap相对于QMap的,实现了但key对应多值。
相关帮助文档:QHash、QMultiHash
2. 简单范例
2.1. QHash
- #include <QHash>
- #include <QDebug>
- QHash<QString,int> m_map;
- m_map["a"] = 10;
- m_map["a"] = 11;
- m_map["as"] = 13;
- m_map.insert("b",22);//同key不同value
- m_map.insert("b",23);
- m_map.insert("ba",55);
- m_map.insert("ba",56);
- m_map.insert("t1",77);//同value不同key
- m_map.insert("t2",77);
- auto find_index = m_map.find("as");
- if(find_index!=m_map.end()) {
- qDebug()<<find_index.key()<<find_index.value();
- }
- qDebug()<<m_map.value("a");
- qDebug()<<m_map.value("b");
- qDebug()<<m_map.value("aa");
- qDebug()<<m_map.values("b");//测试同key不同value
- qDebug()<<m_map.key(22);
- qDebug()<<m_map.key(77);
- qDebug()<<m_map.keys(77);//测试同value不同key
结果
- "as" 13
- 11
- 23
- 0
- (23)
- ""
- "t2"
- ("t2", "t1")
2.2. QMultiHash
- QMultiHash<QString,int> m_map;
- //m_map["a"] = 10;
- //m_map["a"] = 11;
- //m_map["as"] = 13;
- m_map.insert("b",22);//同key不同value
- m_map.insert("b",23);
- m_map.insert("ba",55);
- m_map.insert("ba",56);
- m_map.insert("t1",77);//同value不同key
- m_map.insert("t2",77);
- auto find_index = m_map.find("as");
- if(find_index!=m_map.end()) {
- qDebug()<<find_index.key()<<find_index.value();
- }
- qDebug()<<m_map.value("a");
- qDebug()<<m_map.value("b");
- qDebug()<<m_map.value("aa");
- qDebug()<<m_map.values("b");//测试同key不同value
- qDebug()<<m_map.key(22);
- qDebug()<<m_map.key(77);
- qDebug()<<m_map.keys(77);//测试同value不同key
- //修改必须用replace
- m_map.replace("b",25);//讲第一个key=b的修改为了25
- m_map.replace("t3",77);//由于没有t3=77所以新增加了一个
- qDebug()<<m_map.values("b");
- qDebug()<<m_map.keys(77);
结果
- 0
- 23
- 0
- (23, 22)
- "b"
- "t1"
- ("t1", "t2")
- (25, 22)
- ("t1", "t2", "t3")
3. 自定义类型实现hash
见QSet使用-自定义类型,QSet也是利用哈希表实现,原理相同。
转载请以链接形式标明本文标题和地址:Techie亮博客 » QHash和QMultiHash使用
最新文章
- connect mysql
- CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应
- Servlet监听器类型
- C#中两个时间的比较
- Alisha’s Party(队列)
- Linux的grep命令详解
- 区间Dp 暴力枚举+动态规划 Hdu1081
- win7 下安装 ubuntu 16.04双系统
- 开源API测试工具 Hitchhiker v0.8 - 自动化测试结果统计
- 001-List,数组,Set,Map属性的映射
- JS日期格式化转换方法
- UIPath Level 1
- 使用JWT来实现对API的授权访问
- Bootstrap 框架
- linux文件系统启动流程、启动脚本
- Spark 广播变量BroadCast
- git 配置别名
- 树状数组(hdu-4325,hdu-1166,pat-1057)
- 【大数据系列】MapReduce示例好友推荐
- linux升级mysql到5.7
热门文章
- R语言学习笔记—决策树分类
- Matlab_GUI
- 20155327 2016-2017-2 《Java程序设计》第一周学习总结
- 在windows上搭建redis集群(redis-cluster)(转载)
- springmvc 使用 response 的注意事项以及解决500 空指针异常找不到 response 的方法
- Hyperledger Fabric CouchDB as the State Database——使用CouchDB
- 【python 3.6】python读取json数据存入MySQL(二)
- python—2.x中如何使用中文
- Paper Reading - Convolutional Sequence to Sequence Learning ( CoRR 2017 ) ★
- django项目中关于跨域CORS