QMap 和 QHash容器

本文介绍了QMap和QHash在Qt库中的特性与差异。QHash提供更快的查找速度,且以任意顺序存储元素,而QMap按Key顺序存储,要求Key实现operator<()。在需要存储一键多值的数据时,可以使用QMultiMap或QMultiHash。此外,文章还提及了两种迭代器的使用:Java风格和STL风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QMap类、 QHash类

  • QMap与QHash差别:
    ①QHash比QMap查找速度更快。
    ②QHash以任意顺序存储,QMap以Key顺序存储数据。
    ③QHash的Key必须提供operator==()及一个全局的qHash(Key)函数,而QMap的Key必须提供operator<()函数。
    存储一键多值数据时可使用QMultiMap<Key,T>容器或QMultiHash<Key,T>容器。

  • Java风格迭代器
    在这里插入图片描述

  • STL风格迭代器
    在这里插入图片描述

//定义一个Map容器<key, value>
    QMap<QString, QString> infoMap;

//添加元素
    infoMap.insert("张三", "23岁");
    infoMap.insert("李四", "24岁");
    infoMap["王五"] = "25岁";
    infoMap["赵六"] = "26岁";

//通过key查找value
    qDebug() << "张三: " <<infoMap["张三"];
    qDebug() << "李四: " <<infoMap.value("李四");

//通过value查找key
    qDebug() << "23岁的: " << infoMap.key("23岁");

//java风格只读迭代器
    QMapIterator<QString, QString> it_map_r(infoMap);
    for(it_map_r.toFront(); it_map_r.hasNext();){
   
        it_map_r.next();
        qDebug() << it_map_r.key() << ": " << it_map_r.value();
    }

//java风格读写迭代器
    QMutableMapIterator<QString, QString> it_map_rw(infoMap);
	//修改value
    if(it_map_rw.findNext("23岁")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值