QPair的介绍及用法
QPair是一个模板类,它存储一对值(key,value),可以是不同的数据类型。QPair的用法有以下几个方面:
-
QPair的构造函数有以下几种形式:
- QPair():默认构造函数,创建一个空的QPair对象。
- QPair(QPair<TT1, TT2> &&p):移动构造函数,从另一个QPair对象p移动数据到当前对象。
- QPair(const QPair<TT1, TT2> &p):拷贝构造函数,从另一个QPair对象p复制数据到当前对象。
- QPair(const T1 &value1, const T2 &value2):创建一个QPair对象,其中first为value1,second为value2。
例如:
QPair<int, QString> p1; // 创建一个空的QPair对象 QPair<int, QString> p2(1, "Hello"); // 创建一个QPair对象,其中first为1,second为"Hello" QPair<int, QString> p3(p2); // 创建一个QPair对象,从p2复制数据 QPair<int, QString> p4(std::move(p2)); // 创建一个QPair对象,从p2移动数据 -
QPair的常用接口有以下几种:
- first和second:分别表示QPair对象中的第一个值和第二个值,可以直接访问和修改。
- qMakePair(const T1 &value1, const T2 &value2):创建一个QPair对象,其中first为value1,second为value2,等同于QPair(value1, value2)。
- swap(QPair<T1, T2> &other):交换当前对象和另一个QPair对象other的数据。
- operator=、operator==、operator!=、operator<、operator<=、operator>、operator>=:分别表示赋值、相等、不等、小于、小于等于、大于、大于等于操作,注意先比较first,如果相同则再比较second。
- operator>>和operator<<:分别表示从数据流中读取和写入QPair对象,注意需要对T1和T2实现重载>>和<<。
例如:
QPair<int, QString> p1(1, "Hello"); QPair<int, QString> p2 = qMakePair(2, "World"); // 等同于QPair<int, QString> p2(2, "World"); p1.first = 3; // 修改p1的第一个值为3 p1.second = "Qt"; // 修改p1的第二个值为"Qt" p1.swap(p2); // 交换p1和p2的数据 bool b1 = (p1 == p2); // 判断p1和p2是否相等,即first和second都相等 bool b2 = (p1 < p2); // 判断p1是否小于p2,即先比较first,如果相同则再比较second QDataStream ds; ds << p1; // 将p1写入数据流 ds >> p2; // 从数据流中读取p2 -
QPair的常见用法有以下几种:
- 作为函数的返回值,可以返回两个相关的值,而不需要定义一个结构体或类。
- 作为容器的元素,可以存储键值对,例如QMap、QHash、QList等。
- 作为算法的参数,可以传递两个相关的值,例如qSort、qStableSort等。
例如:
// 定义一个函数,返回两个整数的最大公约数和最小公倍数 QPair<int, int> gcdAndLcm(int a, int b) {int gcd = 1; // 最大公约数int lcm = a * b; // 最小公倍数for (int i = 2; i <= qMin(a, b); i++) {if (a % i == 0 && b % i == 0) {gcd = i; // 更新最大公约数lcm = lcm / i; // 更新最小公倍数}}return QPair<int, int>(gcd, lcm); // 返回一对值 }// 定义一个结构体,表示学生的姓名和成绩 struct Student {QString name;int score; };// 定义一个比较函数,按照成绩降序排序,如果成绩相同则按照姓名升序排序 bool compare(const Student &s1, const Student &s2) {return qMakePair(-s1.score, s1.name) < qMakePair(-s2.score, s2.name); }int main() {// 调用函数,获取两个整数的最大公约数和最小公倍数QPair<int, int> result = gcdAndLcm(12, 18);qDebug() << "GCD:" << result.first << "LCM:" << result.second;// 创建一个QMap容器,存储国家和首都的对应关系QMap<QString, QString> countries;countries.insert("China", "Beijing");countries.insert("Japan", "Tokyo");countries.insert("USA", "Washington");// 遍历QMap容器,输出每个QPair元素for (QPair<QString, QString> pair : countries) {qDebug() << pair.first << "->" << pair.second;}// 创建一个QList容器,存储学生的姓名和成绩QList<Student> students;students.append({"Alice", 90});students.append({"Bob", 85});students.append({"Cindy", 95});students.append({"David", 85});// 使用qSort算法,按照比较函数排序qSort(students.begin(), students.end(), compare);// 遍历QList容器,输出每个学生的信息for (Student s : students) {qDebug() << s.name << s.score;}return 0; }输出:
GCD: 6 LCM: 36 China -> Beijing Japan -> Tokyo USA -> Washington Cindy 95 Alice 90 Bob 85 David 85
参考资料:
- QPair使用
- QPair 的用法
- C++ pair的基本用法总结(整理)
相关文章:
QPair的介绍及用法
QPair是一个模板类,它存储一对值(key,value),可以是不同的数据类型。QPair的用法有以下几个方面: QPair的构造函数有以下几种形式: QPair():默认构造函数,创建一个空的QP…...
掌握未来技术趋势,Python编程引领人工智能时代
掌握未来技术趋势,Python编程引领人工智能时代 摘要:Python作为一种高级编程语言,在人工智能领域中扮演着越来越重要的角色。本文将通过介绍Python编程的特点、应用场景及发展前景,展望Python未来的发展趋势,并结合代…...
【自留地】后端 - PHP - MySQL - Nginx - Python - Java
PHP ThinkPHP6入门手册 【精选】【汇总】ThinkPHP6入门手册_tp6手册_Rudon滨海渔村的博客-CSDN博客文章浏览阅读5.4k次。安装安装Composer【win】https://getcomposer.org/Composer-Setup.exe【Linux & MacOS】curl -sS https://getcomposer.org/installer | phpmv compo…...
网页视频下载工具 iTubeGo mac中文版软件特色
iTubeGo YouTube Downloader mac是一款功能强大的YouTube视频下载工具。 iTubeGo YouTube Downloader mac软件特色 多种格式支持:iTubeGo YouTube Downloader可以将YouTube视频下载为多种常见的视频和音频格式,包括MP4、MP3、AVI、FLV、MOV、WMV等&…...
深度学习入门(第三天)——卷积神经网络
一、卷积神经网络应用领域 CV领域发展: 比赛中预测错误率的百分比,每年逐步下降。Human是人类肉眼的识别能力,2016年开始已经远高于人类肉眼死别能力,后面就取消了该方向的比赛了。 检测任务: 分类与检索:…...
【Unity小技巧】图片使用的一些常见问题
文章目录 前言Button不规则按钮点击空白区域不响应点击事件1. 设置资源参数2. 代码设置按钮Image的alphaHitTestMinimumThreshold3. 解释:4. 效果 Unity Image 原图比例控制方法一 Preserve Aspect1. 设置勾选Preserve Aspect(保持长宽比)&am…...
ZJU Beamer学习手册(二)
ZJU Beamer学习手册基于 Overleaf 的 ZJU Beamer模板 进行解读,本文则基于该模版进行进一步修改。 参考文献 首先在frame文件夹中增加reference.tex文件,文件内容如下。这段代码对参考文献的引用进行了预处理。 \usepackage[backendbiber]{biblatex} \…...
Shaderlab的组成部分SubShader
文档 渲染标签 渲染状态 渲染通道 Subshader 一个shader文件至少有一个subshader;多个subshader的顺序一般按照效果好到差的顺序编写显示物体的时候,设备从多个subshader中,按从前到后的顺序找到第一个符合的subshader进行执行 Subshader组成 渲染标…...
C语言 字符函数汇总,模拟实现各字符函数(炒鸡详细)
目录 求字符串长度 strlen 示例 模拟实现strlen 长度不受限制的字符串函数 strcpy 示例 模拟实现strcpy strcat 模拟实现strcat strcmp 示例 模拟实现strcmp 长度受限制的字符串函数介绍 strncpy 示例 模拟实现strncpy strncat 示例 模拟实现strncat s…...
微积分在神经网络中的本质
calculus 在一个神经网络中我们通常将每一层的输出结果表示为: a [ l ] a^{[l]} a[l] 为了方便记录,将神经网络第一层记为: [ 1 ] [1] [1] 对应的计算记录为为: a [ l ] : 第 l 层 a [ j ] : 第 j 个神经…...
CentOS部署Skywalking
一、安装Docker #yum -y install gcc #yum -y install gcc-c #yum install -y yum-utils 设置国内的镜像仓库 #yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更新yum软件包索引 #yum makecache fast 安装Docker引擎 #yum …...
window上Clion配置C++版本的opencv
window上Clion配置opencv 注意版本一定要对的上,否则可能会出错,亲测 widnows 11mingw 8.1.0opencv 4.5.5 mingw8.1下载地址https://sourceforge.net/projects/mingw/ 配置环境变量 cmake下载 安装完添加环境变量 来到官网,下载 windows 对…...
FPGA时序分析与约束(14)——虚拟路径
一、概述 到目前为止,我们已经看到了如何约束时钟和端口来指定设计中的时序要求,我们可以通过这些基础的约束命令来进行时序约束,但是时序分析工具默认的时序检查方式可能和我们实际工程实现的情况不同,通常来说是约束过紧&#x…...
【Python】解析CPP类定义代码,获取UML类图信息
参考 & 鸣谢 CppHeaderParser - 官方文档Python解析C头文件win10直接获得文件绝对路径的方法总结 目的 解析CPP头文件中的类定义,获取UML中的属性。用于画UML类图。如下所示格式,图片来源-链接 即获取,类名,成员函数&#x…...
Docker存储驱动之- overlay2
docker支持多种graphDriver,包括vfs、devicemapper、overlay、overlay2、aufs等等,其中最常用的就是aufs了,但随着linux内核3.18把overlay纳入其中,overlay的地位变得更重,最近也在自己的虚拟机上用overlay2作为docker…...
Vue3 shallowRef 和 shallowReactive
一、shallowRef 使用shallowRef之前需要进行引入: import { shallowRef } from vue; 使用方法和ref 的使用方法一致,以下是二者的区别: 1. 如果ref 和 shallowRef 都传入的是普通数据类型的数据,那么他们的效果是一样的&#x…...
Python数据分析实战① Python实现数据可视化
文章目录 一、数据可视化介绍二、matplotlib和pandas画图1.matplotlib简介和简单使用2.matplotlib常见作图类型3.使用pandas画图4.pandas中绘图与matplotlib结合使用 三、订单数据分析展示四、Titanic灾难数据分析显示 一、数据可视化介绍 数据可视化是指将数据放在可视环境中…...
ASP.NET 开发几个知识点
1、 皮肤设定: 项目右键,建立皮肤 app_themes 文件夹,右键 建立 web from 皮肤文件, 设定皮肤样式。全局使用皮肤 web.config 增加 <pages styleSheetTheme"Skin1" /> ,或在 具体页面 头 增加 sty…...
企业微信H5开发遇到的坑
企业微信官方推荐wx.agentConfig引用<script src"https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>是没有效果的 必须引用以下代码才有效果,这也是我看了社区的回答才有所收获,是一个坑 且VUE引用在线的…...
mysql使用--分组查询
1.分组数据 _1.复杂的数据统计 如:SELECT AVG(score) FROM student_score WHERE subject ‘Mysql是怎样运行的’; 上述实现查询指定课程的平均成绩。对FROM得到的结果集1,通过WHER进一步过滤得到结果集2。对结果集2中每一行执行汇总计算。 _2.创建分组 …...
深入解析Cache机制:从原理到性能优化实战
1. 从理论到实战:Cache概念的职场觉醒第一次真正理解Cache的重要性,是在我接手硬件性能监控项目的那一刻。当时领导让我用perf工具监控处理器性能,输入perf list后满屏的cache-misses、cache-loads指标让我彻底懵了——这些在大学《计算机组成…...
all-MiniLM-L6-v2详细步骤:Ollama模型量化部署(Q4_K_M)显存再降40%
all-MiniLM-L6-v2详细步骤:Ollama模型量化部署(Q4_K_M)显存再降40% 在资源受限的环境中部署高效的句子嵌入模型一直是开发者的痛点。all-MiniLM-L6-v2作为轻量级语义表示模型,虽然已经比标准BERT模型小了80%以上,但在…...
运维养龙虾--腾讯云 CloudQ 上线:把企业云上治理,装进你每天都在用的聊天框
想象一下:凌晨两点,你被告警叫醒,不用登录控制台,不用翻文档,直接在企业微信里问一句"昨晚华东区账单怎么涨了",2分钟后就拿到了完整的根因分析报告。这不是科幻,这是 CloudQ 正在做的…...
Kandinsky-5.0-I2V-Lite-5s图生视频工作流整合:接入Notion/Airtable自动化生成
Kandinsky-5.0-I2V-Lite-5s图生视频工作流整合:接入Notion/Airtable自动化生成 1. 产品介绍与核心价值 Kandinsky-5.0-I2V-Lite-5s是一款革命性的轻量级图生视频模型,它让短视频创作变得前所未有的简单。你只需要准备一张首帧图片,再补充一…...
实战指南:基于业务数据,用快马平台AI模型快速生成定制化图表代码
今天想和大家分享一个实战经验:如何用InsCode(快马)平台的AI模型,快速生成符合业务需求的数据可视化图表代码。这个需求源于我们团队最近接到的紧急项目——需要在三天内为客户的销售系统集成十几张动态报表。 需求痛点与解决方案选择 传统开发方式需要手…...
车辆保险笔记
交强险(管对方):必须买,如果不出险每年递减10%,管对方财产损失2000元,医疗费用18000元,人员伤残18万,最小是50%三者险(管对方):必须买医保外用药&…...
游戏脚本助手,电脑点击器,脚本自动点击识图找图_无限试用版
熊猫精灵脚本助手 分类功能项其他功能管理、插件、生成、中控、进程守护、护盾配置、坐标工具脚本设置窗口设置、绑定设置、运行设置、变量设置、程序设置图色识别Yolo识别、找图识别、点色找色文字识别ocr识别找字、字库识别、验证码识别键鼠操作鼠标操作、键盘操作、录制脚本…...
Qwen3-TTS声音设计模型5分钟快速部署:10种语言语音合成一键搞定
Qwen3-TTS声音设计模型5分钟快速部署:10种语言语音合成一键搞定 1. 为什么选择Qwen3-TTS声音设计模型? 1.1 用自然语言"设计"声音,不是选择音色 传统语音合成工具通常提供固定音色库,而Qwen3-TTS的VoiceDesign功能允…...
基于springboot+vue超市进销存管理系统hx0897
文章目录详细视频演示技术介绍功能介绍核心代码系统效果图源码获取详细视频演示 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 技术介绍 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomca…...
Netty-learning-example数据持久化实战:JPA+MySQL与MyBatis+MongoDB对比
Netty-learning-example数据持久化实战:JPAMySQL与MyBatisMongoDB对比 【免费下载链接】netty-learning-example :egg: Netty实践学习案例,见微知著!带着你的心,跟着教程。我相信你行欧。 项目地址: https://gitcode.com/gh_mir…...
