IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> QMap 和 QHash容器 -> 正文阅读

[数据结构与算法]QMap 和 QHash容器

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岁")){
        it_map_rw.setValue("33岁");  
    }
	//输出数据
    for(it_map_rw.toFront(); it_map_rw.hasNext();){
        it_map_rw.next();
        qDebug() << it_map_rw.key() << ": " << it_map_rw.value();
    }

	QMap<int, QString> classMap;
    classMap.insert(101, "张三老师");
    classMap.insert(202, "李四老师");
    classMap.insert(303, "王五老师");
    classMap.insert(104, "赵六老师");

//STL风格只读迭代器
    QMap<int, QString>::const_iterator it_class_r = classMap.constBegin();
    for(; it_class_r != classMap.constEnd(); it_class_r++){
        qDebug() << it_class_r.key() << ": " << it_class_r.value();
    }

//STL风格读写迭代器
    QMap<int, QString>::iterator it_class_rw = classMap.begin();
    it_class_rw = classMap.find(101);
    if(it_class_rw != classMap.end()){
        it_class_rw.value() = "法外狂徒张三";	//修改value
    }

    for(it_class_rw = classMap.begin(); it_class_rw != classMap.end(); it_class_rw++){
        qDebug() << it_class_rw.key() << ": " << it_class_rw.value();
    }

//QMultiMap  定义多个key
    QMultiMap<int, QString> m_calssMap;
    m_calssMap.insert(101, "张三老师");
    m_calssMap.insert(101, "周八老师");
    m_calssMap.insert(101, "李四老师");
    m_calssMap.insert(303, "王五老师");
    m_calssMap.insert(104, "赵六老师");
    m_calssMap.insert(104, "钱九老师");

//删除元素
    m_calssMap.remove(104, "钱九老师");

//只查找101对应的所有value
    qDebug() << m_calssMap.values(101);

//STL风格读写迭代器
    QMultiMap<int, QString>::iterator it_m_class_rw = m_calssMap.begin();
    for(; it_m_class_rw != m_calssMap.end(); it_m_class_rw++){
        qDebug() << it_m_class_rw.key() << ": " << it_m_class_rw.value();
    }

?

QHash

//定义一个Hash容器
    QHash<int, QString> moneyHash;

//添加元素
    moneyHash.insert(1, "壹元");
    moneyHash.insert(5, "伍元");
    moneyHash.insert(10, "拾元");
    moneyHash[20] = "贰拾元";
    moneyHash[50] = "伍拾元";
    moneyHash[100] = "壹百元";
    moneyHash.insertMulti(100, "壹佰元人民币");

//删除元素
    moneyHash.remove(20);
	
//java风格只读迭代器
    QHashIterator<int, QString> it_money_r(moneyHash);
    for(it_money_r.toFront(); it_money_r.hasNext();){
        qDebug() << it_money_r.key() << ": " << it_money_r.next().value();
    }

//java风格读写迭代器
    QMutableHashIterator<int, QString> it_money_rw(moneyHash);
    //修改value
    if(it_money_rw.findNext("拾元")){
        it_money_rw.setValue("10元");
    }
    //访问元素
    for(it_money_rw.toFront(); it_money_rw.hasNext();){
        qDebug() << it_money_rw.key() << ": " << it_money_rw.next().value();
    }


//STL风格只读迭代器
    QHash<int ,QString>::const_iterator it_money_const = moneyHash.constBegin();
    for(; it_money_const != moneyHash.constEnd(); it_money_const++){
        qDebug() << it_money_const.key() << ": "<<it_money_const.value();
    }

//STL风格读写迭代器
    QHash<int, QString>::iterator it_money = moneyHash.find(10);
    //修改value
    if(it_money != moneyHash.end()){
        it_money.value() = "拾元";
    } 
    //访问元素
    for(it_money = moneyHash.begin(); it_money != moneyHash.end(); it_money++){
        qDebug() << it_money.key() << ": "<<it_money.value();
    }
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:50:35  更:2022-03-30 18:54:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:29:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码