QMap与QHash的对比

在看书(Qt 5.9 C++开发指南)的时候,书上写:

QMap存储数据是按照键的顺序,如果不在乎存储顺序,使用QHash会更快。

实现方式:提供一个字典(关联数组),一个键映射到一个值。

实验: 

    QMap<QString,int> map;
    map["123"]=1;
    map["21"]=2;
    map["111111111111"]=-1;
    map["33333"]=4;
    map["1"]=-2;
    QMap<QString,int>::Iterator iter;
    for(iter = map.begin();iter != map.end();iter++)
    {
        qDebug()<<iter.key()<<"  "<<iter.value();
    }

"1" -2

"111111111111" -1

"123" 1

"21" 2

"33333" 4

    QMap<int,QString> map;
    map[123]="1";
    map[21]="2";
    map[11111111]="-1";
    map[33333]="4";
    map[1]="-2";
    QMap<int,QString>::Iterator iter;
    for(iter = map.begin();iter != map.end();iter++)
    {
        qDebug()<<iter.key()<<"  "<<iter.value();
    }

1 "-2"

21 "2"

123 "1"

33333 "4"

11111111 "-1"

可以知道:QMap存储数据是按照键顺序来存储的。

QString按照字典序

int按照数值大小 

QHash

基于散列表来实现字典功能

速度非常快

数据项是任意顺序的


    QHash<QString,int> map;
    map["123"]=1;
    map["21"]=2;
    map["111111111111"]=-1;
    map["33333"]=4;
    map["1"]=-2;
    QHash<QString,int>::Iterator iter;
    for(iter = map.begin();iter != map.end();iter++)
    {
        qDebug()<<iter.key()<<"  "<<iter.value();
    }

运行了三次,结果都不一样 

 "1" -2

"111111111111" -1

"21" 2

"123" 1

"33333" 4

 "21" 2

"111111111111" -1

"123" 1

"33333" 4

"1" -2

"111111111111" -1

"21" 2

"123" 1

"33333" 4

"1" -2

    QHash<int,QString> map;
    map[123]="1";
    map[21]="2";
    map[11111111]="-1";
    map[33333]="4";
    map[1]="-2";
    QHash<int,QString>::Iterator iter;
    for(iter = map.begin();iter != map.end();iter++)
    {
        qDebug()<<iter.key()<<"  "<<iter.value();
    }

11111111    "-1"
1    "-2"
21    "2"
123    "1"
33333    "4"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lpl还在学习的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值