QMap和QHash类

QMap和QHash具有非常相似的功能,它们的差别仅在于:

1.QHash具有比QMap更快的查找速度.

2.QHash以任意的顺序存储数据项,而QMap总是按照键 key的顺序存储数据.

3.QHash的键类型 Key必须提供operator==()和一个全局的qHash(Key)函数,而QMap的键类型Key

必须提供一个operator<()函数。

 

两者时间复杂度比较

容器类键查找 插入 
 平均最坏平均最坏
QMapO(log n)O(log n)O(log n)O(log n)
QHashAmort.O(1)O(n)Amort.O(1)O(n)

 

QMap类:

QMap<Key ,T>提供了一个从类型为Key的键到类型为T的值得映射。

QMap存储的数据形式是一个键对应一个值,并且按照键Key的顺序存储数据。

 

QMap的使用例子

#include <QCoreApplication>
#include<QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QMap<QString,QString> map;
    map.insert("beijing","111");          //map插入字符串"beijing" "111"
    map.insert("shanghai","222");         //map插入字符串"shanghai" "222"

    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");            //遍历查找"beijing" 的map
    if(mi!=map.end())
        mi.value()="001";             //替换"111"

    QMap<QString,QString>::const_iterator modi;
    qDebug()<<"  ";
    for(modi=map.constBegin();modi!=map.constEnd();modi++)   //再次遍历输出map的键值
    {
        qDebug()<<"  "<<modi.key()<<"  "<<modi.value();
    }

    return a.exec();
}

程序输出:

输出

 

STL风格迭代器的两种分类:

容器类只读迭代器读写迭代器
QMap<key,T>,QMultiMap<Key,T>QMap<key,T>::const_iteratorQMap<key,T>::iterator
QHash<Key T>,QMultiHash<Key,T>QHash<Key,T>::const_iteratorQHash<Key,T>::iterator

 

关于QMap和QHash的用法及成员函数详解可参考Qt文档

http://doc.qt.io/qt-5/qmap.html

http://doc.qt.io/qt-5/qhash.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值