一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMap

QHash具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数据项是自适应的,QHash是以任意的顺序住址他的数据,,当然了他也是可以支持一键多值的,QMultiHash

两种之间的区别是:

QHash查找速度上显著于QMap

QHash以任意的方式进行存储,而QMap则是以key顺序进行存储.

Qhash 的键类型必须提供operator==()和yige 全局的qHash(key)函数。而QMap的键类型key必须提供operator<()函数.

他们同样也是有两种风格的迭代容器。用来进行遍历的。

复制代码
 1 ///QMap<Key,T(value)> and QHash<K,T>
 2  
 3 #include <QtCore/QCoreApplication>
 4 #include <qmap.h>
 5 #include <qdebug.h>
 6  
 7 int main(int argc, char *argv[])
 8 {
 9     QCoreApplication a(argc, argv);
10  
11     QMap<QString,int> map;
12     map.insert("eins o",1);
13     map.insert("sieben",7);
14     map["a test"]=23;
15     //Normally, a QMap allows only one value per key. 
16     //If you call insert() with a key that already exists in the QMap, 
17     //the previous value will be erased
18     map["a test"]=13;
19  
20     int val=map.value("a test");
21     qDebug()<<val;
22  
23     int val2=map.value("error");
24     qDebug()<<val2;    ///0
25  
26     int val3=map.value("error2",20);
27     qDebug()<<val3;
28  
29     int val4=map.value("a test",40);
30     qDebug()<<val4;
31     using a java-style iterator
32     QMapIterator<QString,int> iter(map);
33     while(iter.hasNext())
34     {
35         iter.next();  ///放在前面
36         qDebug()<<iter.key()<<" "<<iter.value();
37     }
38     using an Stl-style iterator 
39     QMap<QString,int>::ConstIterator i=map.constBegin();
40     while(i!=map.constEnd())
41     {
42         qDebug()<<i.key()<<": "<<i.value();
43         ++i;
44     }
45  
46     QMap<QString,int>::Iterator it;
47     it=map.find("sieben");
48     if(it!=map.end())
49         it.value()=8;
50  
51     for(QMap<QString,int>::ConstIterator ite=map.constBegin(); ite!=map.constEnd(); ++ite)
52         qDebug()<<ite.key()<<": "<<ite.value();
53  
54     return 0;//a.exec();
55 }
复制代码

 

复制代码
结果:
13
0
20
13
"a test"   13
"eins o"   1
"sieben"   7
"a test" :  13
"eins o" :  1
"sieben" :  7
"a test" :  13
"eins o" :  1
"sieben" :  8
请按任意键继续. . .
复制代码

 

posted on   一杯清酒邀明月  阅读(4844)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示