博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16.QT-QMap和QHash解析
阅读量:7079 次
发布时间:2019-06-28

本文共 2659 字,大约阅读时间需要 8 分钟。

QMap

  • QMap原型为class QMap <K,T>,其中K表示键,T表示值,K和T属于映射关系.
  • QMap会根据K来自动进行升序键排序
  • QMap中的K类型必须重载operator < 

QMap常用函数如下:

const Key QMap::key ( const T & value );                            //通过值来找键,若未找到则返回0,由于只对K键进行排序,所以该函数不是快速查找const T QMap::value ( const Key & key );                        //通过键来查找值, 若未找到则返回0,由于K键已进行排序,所以属于快速查找

QMap示例:

QMap
map; //定义键为QString型,值为int型map["key 1"] = 3;map["key 1"] = 1; //更新key 1的值map["key 4"] = 4;map["key 2"] = 2;map.insert("key 3", 3); //等价于: map["key 3"] = 3;QList
list = map.keys();for(int i=0;i

打印:

"key 1" , 1"key 2" , 2"key 3" , 3"key 4" , 4

 

也可以使用QMapIterator迭代器来遍历整个QMap

QMapIterator常用函数如下:

void toFront ();       //使迭代器的游标指向容器的头部void toBack ();       //使迭代器的游标指向容器的尾部Item next ();        //返回map中的下一项,并使迭代器的游标指向下一项Item previous ();    //返回map中的上一项,并使迭代器的游标指向上一项bool hasNext ();     //若迭代器的游标指向的map还有下一项,则返回true,,若为空则返回falsebool hasPrevious ();  //若迭代器的游标指向的map还有上一项,则返回true,,若为空则返回falseconst Key &  key ();  //返回上一项的键(key)和数值(value);const T& value();    //返回上一项的数值(value);

示例:

QMap
map; map["key 1"] = 3; map["key 1"] = 1; //key 1将会覆盖之前的key 1 map["key 4"] = 4; map["key 2"] = 2; map.insert("key 3", 3); QMapIterator
it(map); while(it.hasNext()) { it.next(); qDebug()<
<<","<

 

在QMap类里也封装了一个  const_iterator 迭代类,也可以通过它来遍历整个QMap

示例如下:

QMap
map;map["key 1"] = 3;map["key 1"] = 1; //key 1将会覆盖之前的key 1map["key 4"] = 4;map["key 2"] = 2;map.insert("key 3", 3);QMap
::const_iterator it;for(it = map.begin();it!=map.end();it++){ qDebug()<< it.key()<<","<

 

 

QHash

  • QHash原型为class QHash<K,T>,其中K表示键,T表示值,K和T属于映射关系.
  • 和QMap不同的是,QHash中的键值对不会进行自动排序,而是更据Hash值存储
  • QHash中的Key类型必须重载operator ==
  • QHash中的Key对象必须重载全局哈希函数qHash()
  • 由于QHash通过Hash表存储,所以查找比QMap快

QHash常用函数和QMap类似,示例如下:

QHash
hash;hash["key 1"] = 3;hash["key 1"] = 1; //key 1将会覆盖之前的key 1hash["key 4"] = 4;hash["key 2"] = 2;hash.insert("key 3", 3);QList
list = hash.keys();for(int i=0;i

运行打印:

"key 1" , 1"key 2" , 2"key 3" , 3"key 4" , 4

 

QHash的迭代器QHashIterator类用法,和QMap的使用方法一样.

QHash内部也封装了一个  const_iterator 迭代类,和QMap的使用方法也一样,比如:

QHash
hash; hash["key 1"] = 3; hash["key 1"] = 1; //key 1将会覆盖之前的key 1 hash["key 4"] = 4; hash["key 2"] = 2; hash.insert("key 3", 3); QHash
::const_iterator it; for(it=hash.begin();it!=hash.end();it++) qDebug()<
<<","<

 

 

QMap和QHash区别

 

 

 

转载地址:http://tlpml.baihongyu.com/

你可能感兴趣的文章
模块化编程和AMD
查看>>
memcpy的用法总结
查看>>
HDU 4027 Can you answer these queries?
查看>>
webpack管理资源
查看>>
《网络攻防实践》第三周作业
查看>>
第二次冲刺-个人工作总结07
查看>>
例10-4 uva10791(唯一分解)
查看>>
OC深浅复制
查看>>
CSS组合选择器
查看>>
BZOJ 3672: [Noi2014]购票
查看>>
Steps to developing Metro style apps 第一章-Creat a UI(2)(3)
查看>>
洪小瑶学iOS-NSNotificationCenter 详解
查看>>
SSE图像算法优化系列十四:局部均方差及局部平方差算法的优化。
查看>>
linux下ftp(vsftpd)添加用户及设置权限详细步骤
查看>>
水平居中
查看>>
js匿名函数,闭包
查看>>
使用Python写Windows Service服务程序
查看>>
Chrome 开发者控制台使用技巧
查看>>
Android代码内存优化建议-Android官方篇
查看>>
基于.Net平台C#的微信网页版API
查看>>