QMap 和 QHash容器

article/2025/10/23 20:08:23

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查找valueqDebug() << "张三: " <<infoMap["张三"];qDebug() << "李四: " <<infoMap.value("李四");//通过value查找keyqDebug() << "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);//修改valueif(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  定义多个keyQMultiMap<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对应的所有valueqDebug() << 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);//修改valueif(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);//修改valueif(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();}

http://chatgpt.dhexx.cn/article/5vqVviO7.shtml

相关文章

关于QMap的几点总结思考

关于QMap的几点总结思考 题记&#xff1a; 前段时间集中精力写了数据的分拣算法&#xff0c;用到了容器QMap和QMultiMap。回头再来回去该算法的时候&#xff0c;又觉得当时好像不是自己写的一样&#xff0c;于是有必要将QMap类来总结一下。 首先来了解下C中STL中的map&#x…

Qt容器:QMap

一、描述 QMap<Key, T> 是 Qt 的通用容器类之一。 它存储&#xff08;键&#xff0c;值&#xff09;对并提供按键快速查找。 二、成员函数 1、QMap::const_iterator constFind(const Key &key) 返回一个 const 迭代器&#xff0c;该迭代器指向map中具有 key 键的项…

java swing 实现简单计算器

gitee仓库地址&#xff1a;Calculator: 简单计算器 (gitee.com)https://gitee.com/misaka10000/calculator 常量定义&#xff1a; package com.wuzihao.calculator;import java.awt.*;public class Constant {public static final String NAME "简单计算器";publi…

C++实现“简单计算器”

最近在看九度上面的题目&#xff0c;其中一道题本以为比较简单&#xff0c;但花了不少时间&#xff0c;题目如下&#xff1a; 题目1019&#xff1a;简单计算器 我的思路是先读入一个字符串&#xff0c;再将字符串里面的数字和运算符号分别提取出来&#xff0c;最后根据运算的…

C++ 简单计算器

C实现简单的计算器 实现一个简单的计算器&#xff0c;可以实现对数字的加减乘除运算并输出显示结果。 完整代码 #include <iostream> using namespace std;int main() {char op;float num1, num2;cout << "输入运算符&#xff1a;、-、*、/ : ";cin &…

简单的计算器

实例说明 从键盘上输入数据并进行加、减、乘、除四则运算&#xff08;以“a运算符b” 的形式输入〕&#xff0c;判断输入的数据是否可以进行计算&#xff0c;若能计算&#xff0c;则输出计算结果。 实现代码 实现结果

C语言实现简单计算器

C语言实现简单计算器 一、背景二、代码1、数据结构2、弟弟行为的编程三、基本逻辑中缀转后缀&#xff08;1&#xff09;为什么要转&#xff08;2&#xff09;怎么转&#xff08;3&#xff09;注意事项 四、演示图片 一、背景 自己希望通过这个处女帖&#xff0c;来互相学习、经…

PHP实现简单计算器

目录 一、题目&#xff1a; 二、基本界面设计代码&#xff1a; 三、分析&#xff1a; 四、实现编程三个步骤 五、完整实现代码 一、题目&#xff1a; 题目描述&#xff1a;下列列表框中有、-、*、/四种运算符&#xff0c;选择不同的运算符进行&#xff0c;单击计算按钮进行不…

Linux:简单计算器

四则运算 vim一下1. 思路2. 代码分析及展示3. 运行结果 vim一下 用vi编写一个简单的四则运算程序&#xff0c;可以接受键盘输入的两个数和一个运算符号&#xff0c;并在控制台输出结果。 1. 思路 从键盘输入变量的值&#xff0c;获取这个值调用加减乘除这些函数&#xff0c;…

HTML实现简单计算器

简单计算器 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>简易计算器</title><style type"text/css">*{margin: auto;padding: 0px;text-align: center;font-family: "微软雅黑";}.con…

C语言实现简单计算器程序

简单计算器程序 编写一个简单计算器程序&#xff0c;输入格式为&#xff1a;data1 op data2。其中data1和data2是参加运算的两个数&#xff0c;op为运算符&#xff0c;它的取值只能是、-、*、/。。要求必须使用switch-case语句实现。 输出结果精确到小数点后2位&#xff1a;如…

AndroidStudio案例——简单计算器

效果展示 实验内容及步骤 设计一款带有可视化界面的简单计算器&#xff0c;供用户输入数据并查看结果。用户通过点击相应按钮&#xff08;加减乘除运算符、等号、数字&#xff09;输入正确的表达式&#xff0c;计算器进行相应的加减乘除运算&#xff0c;且可以进行小数和整数的…

Android简单计算器

文章目录 一、案列一、步骤1、activity_main.xml2、colors.xml3、strings.xml4、图片 一、案列 实现简易计算器 一、步骤 线性布局实现计算器&#xff0c;一个线性垂直布局里嵌套多个线性水平布局&#xff0c;插入文本框&#xff0c;编辑框&#xff0c;按钮多个控件&#x…

19:简单计算器

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 一个最简单的计算器&#xff0c;支持, -, *, / 四种运算。仅需考虑输入输出为整数的情况&#xff0c;数据和运算结果不会超过int表示的范围。 输入 输入只有一行&#xff0c;共有三个参数&#xff0c;其中第1、2个参数…

python制作简单计算器

​ 做一个计算器&#xff0c;这是我们想要的效果。 1、准备工作 导入time、tqdm、math库 from tqdm import* from time import* from math import*2、开始 添加一个重复循环并添加变量s while True:#清屏print(\033c)while True:#如果用法输入的是str类型将打印输入错误&…

JavaScript实现简单计算器

一、两个输入框输入数值计算 步骤 1、编写html代码&#xff0c;实现计算器页面视图效果 2、编写js&#xff0c;实现点击输入数字和符号输出结果 1、编写html 1.1定义两个输入框和一个隐藏框。 1.2定义加减乘除四个按钮&#xff0c;并在里面设置一个单击事件onclick&#…

Java编写简单计算器

本文用Java的swing来实现一个简单计算器&#xff0c;主要内容为图形用户界面GUI的实现以及运算表达式核心算法的设计编写。 程序运行环境为Windows10 &#xff0c;编译环境为IntelliJ IDEA Community Edition 2022.2.3 一、具体功能&#xff1a; 1、&#xff1a;输入&#x…

项目一:简单计算器的实现

项目概述 1.1项目目标和主要内容 学习图形界 面的设计&#xff0c;利用 MFC 应用程序&#xff08;Java swing 或 QT 框架&#xff0c;或 C#&#xff09;创建基于对话框的应用程序&#xff0c;添加按钮、编辑框等控件&#xff1b; 能通过设计的按钮控件输入并实现简单算术运算&a…

【C语言】实现简易计算器

目录 1.实现逻辑 2.运行过程 3.优化前代码分析 主函数 计算函数 4.优化后代码分析 主函数 计算方法函数 输入操作数的函数 5.完整代码展示 1.实现逻辑 实现一个简易的计算器&#xff0c;可以计算两个整数的加减乘除 2.运行过程 3.优化前代码分析 主函数 int main()…

java工作流引擎,roadflow(一个强大的工作流引擎)

JAVA工作流引擎(J-RoadFlow) J-RoadFlow工作流平台是知名的.NET工作流引擎RoadFlow的JAVA移植版。该工作流平台由从事多年OA和工作流实施及开发的团队研发&#xff0c; 采用最简单的SM架构实现大中小企业中日常复杂业务流程审批。JAVA版不仅仅是.NET版本的移植&#xff0c;从架…