QMap & QHash基础应用

2023-11-13

#include <QCoreApplication>

#include<map>

#include<QDebug>

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

    //QMap

    /*QMap<Key,T>提供一个从类型为Key的键 到类型为 T的值的映射。童话曾QMap储存的书数据形式时一个键对应一个值,

     * 并且按照Key的次序(ASCII码)存储数据。

     * 为了能够支持一键多值的情况,QMap提供QMap<Key,T>::inserMulti()和QMap<Key,T>::values()函数。

     * QMultiMap类来实例化一个QMap对象

    */

    //1. 创建QMap实力,第一个参数为QString类型的键,第一个参数为int类型的值

    QMap<QString,int> qmap;

    //插入数据信息的两种方式

    qmap["g报警"]= 110;

    qmap["b火警"]= 119;

    qmap["a求救"]= 911;

    qmap.insert("e大哥",1);  //插入   QMap 在里面会根据key的Ascii码依次排序

    qmap.insert("d二弟",2);

    qmap.insert("c三弟",3);

    qmap.insert("f四弟",4);

    qDebug()<<qmap;

    //删除数据信息key键

    qmap.remove("c三弟");

    qDebug()<<qmap;

    //1.迭代器(java)

    QMapIterator<QString,int> itro(qmap);

    while(itro.hasNext())  //hasNext() 如果当前引用的下一个对象不为null时返回true

    {

         itro.next();  //引用指向下一个对象

       qDebug()<<itro.key()<<":"<<itro.value(); //输出当前对象

    }

    //2.STL类型的迭代

    qDebug()<<"**********************";

    QMap<QString,int>::const_iterator citr = qmap.constBegin();  //把容器里的第一个引用传进去

    while (citr!= qmap.constEnd()) {

        qDebug()<<citr.key()<<":"<<citr.value();

        citr++;

    }

    //用key键 来查找对应的 T

    qDebug()<<endl;

    qDebug()<<"key-->T"<<qmap.value("f四弟");

    //用T键 来查找对应的 key

    qDebug()<<"key-->T"<<qmap.key(911);

    //修改键值

    //一个键对应一个值,再次调用insert()函数将覆盖之前的值

    qDebug()<<endl;

    qmap.insert("f四弟",789456211);

    qDebug()<<qmap;

    //查询是否包含某个键

    qDebug()<<endl;

    qDebug()<<"result="<<qmap.contains("a求救");

    qDebug()<<"result="<<qmap.contains("c三弟");

    //输出所有的QMap实例化:key键和T值

    qDebug()<<endl;

    QList<QString> lkey = qmap.keys();

    qDebug()<<lkey;

    QList<int> lint = qmap.values();

    qDebug()<<lint;

    //一个键对应多个值

    //直接使用QMultiMap类来实例化一个QMap对象

    qDebug()<<endl;

    QMultiMap<QString,QString> mulmap;

    mulmap.insert("学生","id");

    mulmap.insert("学生","name");

    mulmap.insert("学生","sex");

    mulmap.insert("学生","score");

    mulmap.insert("学生","age");

    qDebug()<<mulmap;

    qDebug()<<endl;

    qDebug()<<endl;

    //QHash

    /*QHash<Key,T>具有与QMap几乎完全想用的API。QHash维护着一张哈希表(Hash Table),

     * 哈希表的大小与QHash的数据项的数目相适应。

     * QHash以任意的顺序组织它的数据。当存储数据的顺序无关紧要时,建议使用QHash作为存放数据的容器

*/

    QHash<QString,int> qh//存储时会分配好位置 是无序的 接下来遍历位置不变 

    qh["a大哥"]=1;

    qh["b二哥"]=2;

    qh["c三弟"]=3;

    qh["d四弟"]=4;

    qh.insert("f五弟",5);

    QList<QString> list = qh.keys();

    for(int i = 0;i < list.length();i++){

        qDebug()<<list[i]<<":"<<qh.value(list[i]);

    }

    qDebug()<<endl;

    //QHash内部的迭代其QHashIterator类

    QHash<QString,int>::const_iterator itor = qh.constBegin();

    for(;itor !=qh.constEnd();itor++){

        qDebug()<<itor.key()<<":"<<itor.value();

    }

   

   

    /*

    QMap 与QHash区别:

    QHap QHash的功能差不多,但QHash的查找速度更快;

    QMap是按照键的顺序存储数据,而QHash是任意顺序存储的;

    QMap的键必须提供"<"运算符,而QHash的键必须提供"=="运算符和一个名为qHash()的全局散列函数

    */

    return a.exec();

}


                
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QMap & QHash基础应用 的相关文章

随机推荐

  • 深度学习框架Pytorch快速开发与实践

    决定用两个星期读完这本书 并自己用Pytorch搭建一个模型 2019 8 5 第一章深度学习介绍 明确学习目标 深度学习难点不是深度学习本身 难的是你要吃透问题 如何用深度学习的逻辑去思考你自己的问题 有针对性地设计模型 难的是你有分析问
  • 机器学习系列(7)_机器学习路线图(附资料)

    作者 龙心尘 寒小阳 时间 2016年2月 出处 http blog csdn net longxinchen ml article details 50749614 http blog csdn net han xiaoyang arti
  • epoll高度封装reactor,几乎所有可见服务器的底层框架

    目录 前言 reactor是什么 如何理解 reactor所需组件流程分析 组件 流程 如何将epoll的IO驱动封装成reactor事件反应堆驱动 reactor分块分析实现 注册事件处理器部分流程 多路复用器监视多路IO事件 事件分发器
  • 【React学习】React更新渲染原理

    当我们调用 setState 之后发生了什么 react经历了怎样的过程将新的 state 渲染到页面上 一次react更新 核心就是对虚拟dom进行diff 找出最少的需要变化的dom节点 然后对其进行相应的dom操作 用户即可在页面上看
  • MySQL数据导入--load data

    起因 朋友的数据库 用的版本是5 5 19 服务端和客户端字符集都是utf8 因为某些原因 系统经过好多人的开发和处理 同一个表存在多种字符集写入 so乱码问题 时有发生 为了彻底解决这个问题 我这边的操作如下 1 核查工程中转码的地方 2
  • Python初学者的一个常见错误

    大家都知道 列表是可变数据类型 而可变数据类型的操作尤其需要我们细心 不然很容易出错 来看看这个例子 list1 1 2 3 4 5 list2 list1 3 print list2 list1 2 b list2 1 1 a print
  • [从零开始学DeepFaceLab-8]: 使用-命令行八大操作步骤-第5步:从源图片中提取所需图片

    目录 总体流程 步骤5 从源视频中提取图片 5 1 命令 5 data dst faceset extract manual fix bat 不推荐使用
  • vue回车事件

    一 需求 需求 登录页面在输入密码后 按回车键 Enter 触发登录 二 实现 部分代码 重点事件 keyup enter native 指的是回车监听事件 举例 keyup enter native submitForm ruleForm
  • 贪心算法——排队打水问题

    6 3 排队打水问题 有n个人排队到r个水龙头去打水 他们装满水桶的时间为t1 t2 tn为正整数且个不相等 应如何安排他们打水顺序才能使他们花费的时间最少 算法分析 时间总和 等待时间 装水时间 采用贪心思想 先sort 默认将装水时间从
  • LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】

    LeetCode 2335 装满杯子需要的最短总时长 贪心 数学 题目描述 解题思路一 其实像一道数学题目 假设三个杯子x lt y lt z先分两种情况 第一种 x y lt z 答案直接是最大的z 第二种 x y gt z 先将x与y互
  • .NET6之MiniAPI(四):配置

    配置文件 是一个每个应用服务程序常用的功能 从原来的终端应用时代 到现在的元宇宙时代 配置都是很悠然自得的存在 asp net core提供了强大的配置文件访问机制 不管是MVC API还是MiniAPI 使用方式都是相同的 框架默认的配置
  • 初识 Redis - 分布式,内存数据存储,缓存

    目录 1 什么是 Redis 1 1 Redis 内存数据存储 1 2 Redis 用作数据库 1 3 Redis 用作缓存 cache 1 4 用作消息中间件 1 什么是 Redis The open source in memory d
  • 关于面试时的自我介绍口述(样版)

    前言 段落引用很多小伙伴都有过面试不知道说啥 一昧的做简单的自我介绍 如 我叫XXX 今年几岁 男 来自XXX 然后就不知道说啥了 甚至有的会说简历上有您直接看就是了 口述朗文 下面的1 2 3 4无需在口述中表达出来 简单的说就是别念出来
  • 右键菜单调用命令行

    新建文档 Windows Registry Editor Version 5 00 HKEY CLASSES ROOT Folder shell CmdPrompt cmd here HKEY CLASSES ROOT Folder she
  • DELL戴尔笔记本电脑灵越Inspiron 14 5410&5418原厂Win10系统恢复原装OEM出厂状态系统

    Dell戴尔笔记本电脑 灵越Inspiron 14 5410 5418原装出厂OEM系统镜像原厂系统文件 系统自带所有驱动 出厂主题壁纸LOGO Office办公软件等预装程序 链接 https pan baidu com s 1Qj dW
  • C++ 核心编程

    一 内存分区模型 C 程序在执行时 将内存大方向划分为4个区域 代码区 存放函数体的二进制代码 由操作系统进行管理 全局区 存放全局变量和静态变量以及常量 栈区 由编译器自动分配释放 存放函数的参数值 局部变量等 堆区 由程序员分配和释放
  • 基于STM32的ESP8266获取天气数据(HAL库)

    一 介绍 进入主题 下图正是购买的esp8266模块 对于esp01 引脚图如下 二 刷固件 在使用AT指令时 有时候会无法进入AT模式 也就是在串口发送指令 无应答 除了检查引脚和TTL模块是否接错 还可能是需要刷固件 在接线时要注意TT
  • View移动(scrollTo()、scrollBy()方法)

    源码 View java public void scrollTo int x int y if mScrollX x mScrollY y int oldX mScrollX int oldY mScrollY mScrollX x mS
  • 其实UE4资料很丰富

    除了303个shader外 还有program里面的例子
  • QMap & QHash基础应用

    include