qt之QHash和QMap的区别

QMap提供了一个从类项为key的键到类项为T的值的映射,通常所存储的数据类型是一个键对应一个值,并且按照key的次序存储数据,这个类也支持一键多值,如:QMultiMap
QHash跟QMap基本上一致,但是它维护的是一张哈希表,表的大小和数据项是自适应的,QHash是以任意的顺序放置它的数据,这个类也支持一键多值,如:QMultiHash

两者之间的区别是:
1.QHash查找速度上显著于QMap;
2.QHash以任意的方式进行存储,而QMap则是以key顺序进行存储;
3.QHash的键类型必须提供operator==()和一个全局的QHash(key)函数,而QMap的键类型key必须提供operator<()函数;

QMap<QString,QString> map;
map.insert("beijing","111");
map.insert("shanghai","021");
map.insert("tianjin","022");
map.insert("chongqing","023");
map.insert("jinan","0531");
map.insert("wuhan","027");
QMap<QString,QString>::const_iterator i;
for(i=map.constBegin();i!=map.constEnd;++i)
{
   qDebug()<<i.key()<<"  "<<i.value();
}

QMap<QString,QString>::iterator mi;
mi=map.find("beijing");
if(mi!=map.end())
    mi.value()="010";
QMap<QString,QString>::const_iterator modi;
qDebug()<<"";
for(modi=map.constBegin();modi=map.constEnd();++modi)
    qDebug()<<modi.key()<<"  "<<modi.value();

你可能感兴趣的:(qt)