本文主要是介绍QMap简单用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMap
QHash具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数据项是自适应的,QHash是以任意的顺序住址他的数据,,当然了他也是可以支持一键多值的,QMultiHash
两种之间的区别是:
QHash查找速度上显著于QMap
QHash以任意的方式进行存储,而QMap则是以key顺序进行存储.
Qhash 的键类型必须提供operator==()和yige 全局的qHash(key)函数。而QMap的键类型key必须提供operator<()函数.
他们同样也是有两种风格的迭代容器。用来进行遍历的。
///QMap<Key,T(value)> and QHash<K,T>
#include <QtCore/QCoreApplication>
#include <qmap.h>
#include <qdebug.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMap<QString,int> map;
map.insert("eins o",1);
map.insert("sieben",7);
map["a test"]=23;
//Normally, a QMap allows only one value per key.
//If you call insert() with a key that already exists in the QMap,
//the previous value will be erased
map["a test"]=13;
int val=map.value("a test");
qDebug()<<val;
int val2=map.value("error");
qDebug()<<val2; ///0
int val3=map.value("error2",20);
qDebug()<<val3;
int val4=map.value("a test",40);
qDebug()<<val4;
using a java-style iterator
QMapIterator<QString,int> iter(map);
while(iter.hasNext())
{
iter.next(); ///放在前面
qDebug()<<iter.key()<<" "<<iter.value();
}
using an Stl-style iterator
QMap<QString,int>::ConstIterator i=map.constBegin();
while(i!=map.constEnd())
{
qDebug()<<i.key()<<": "<<i.value();
++i;
}
QMap<QString,int>::Iterator it;
it=map.find("sieben");
if(it!=map.end())
it.value()=8;
for(QMap<QString,int>::ConstIterator ite=map.constBegin(); ite!=map.constEnd(); ++ite)
qDebug()<<ite.key()<<": "<<ite.value();
return 0;//a.exec();
}
结果:
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
请按任意键继续. . .
这篇关于QMap简单用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!