QPair 类说明

QPair 类说明

QPair 是一个模板类,用于存储一对数据项。

头文件

cpp

#include <QPair>

qmake 配置

QT += core

所有成员列表(包括继承成员)

公共类型
类型定义说明
first_type第一个元素的类型(T1)
second_type第二个元素的类型(T2)
公共函数
函数说明
QPair()构造一个空对,元素使用默认值初始化
QPair(const T1 &value1, const T2 &value2)用 value1 和 value2 初始化元素
QPair(const QPair<TT1, TT2> &p)从另一对 p 构造(Qt 5.2 引入)
QPair(QPair<TT1, TT2> &&p)移动构造函数(Qt 5.2 引入)
void swap(QPair<T1, T2> &other)交换两对内容(Qt 5.5 引入)
operator=赋值运算符重载
公共变量
变量说明
T1 first对中的第一个元素
T2 second对中的第二个元素
相关非成员函数
函数说明
qMakePair(const T1 &v1, const T2 &v2)创建 QPair 的便捷函数
swap(QPair<T1, T2> &lhs, QPair<T1, T2> &rhs)交换两对内容
比较运算符(==, !=, <, <=, >, >=)对比较操作
流运算符(<<, >>)序列化支持

详细描述

QPair 是一个模板类,用于存储两个数据项。当 STL 的 pair 类型不可用时,可以使用 QPair<T1, T2>。它存储一个 T1 类型的值和一个 T2 类型的值,可用于需要返回两个值的函数,或作为通用容器的值类型。

示例:

cpp

QPair<QString, double> pair;
pair.first = "pi";
pair.second = M_PI;

注意:对于多个返回值的函数,通常更推荐定义一个小型结构体。结构体可以轻松扩展到多个值,并提供比 first 和 second 更具描述性的成员名称:

struct Variable {QString name;double value;
};
Variable v;
v.name = "pi";
v.value = M_PI;

随着 C++11 自动类型推导(auto)的出现,重点从类型名转移到了函数和成员名称上。因此,QPair 和 std::pair、std::tuple 一样,主要用于泛型(模板)代码中,在这些场景下定义专用类型不可行。

QPair 的模板数据类型(T1 和 T2)必须是可赋值的数据类型。例如,不能存储 QWidget 作为值,而应该存储 QWidget*。某些函数有额外要求,这些要求在具体函数文档中说明。

另请参阅容器类。

成员类型文档

typedef QPair::first_type

对中第一个元素的类型(T1)。

typedef QPair::second_type

对中第二个元素的类型(T2)。

成员函数文档

QPair::QPair()

构造一个空对。第一个和第二个元素使用默认构造的值初始化。

QPair::QPair(const T1 &value1, const T2 &value2)

构造一个对,并用 value1 初始化第一个元素,用 value2 初始化第二个元素。

另请参阅 qMakePair()。

QPair::QPair(const QPair<TT1, TT2> &p)

从另一对 p(类型为 TT1 和 TT2)构造一个对。如果 first 不能从 p.first 初始化,或者 second 不能从 p.second 初始化,此构造函数将失败。

此函数自 Qt 5.2 起引入。

QPair::QPair(QPair<TT1, TT2> &&p)

移动构造函数,使该对实例指向 p 所指向的相同对象。

此函数自 Qt 5.2 起引入。

void QPair::swap(QPair<T1, T2> &other)

交换该对与 other 的内容。

等价于:


qSwap(this->first, other.first);
qSwap(this->second, other.second);

交换重载可以在 std 命名空间中找到,也可以通过参数依赖查找(ADL)在 T 的命名空间中找到。

此函数自 Qt 5.5 起引入。

QPair<T1, T2> &QPair::operator=(const QPair<TT1, TT2> &p)

将 p 复制到该对中。

此函数自 Qt 5.2 起引入。

QPair<T1, T2> &QPair::operator=(QPair<TT1, TT2> &&p)

将 p 移动赋值到该对实例中。

此函数自 Qt 5.2 起引入。

成员变量文档

T1 QPair::first

对中的第一个元素。

T2 QPair::second

对中的第二个元素。

相关非成员函数

QPair<T1, T2> qMakePair(const T1 &value1, const T2 &value2)

返回包含 value1 和 value2 的 QPair<T1, T2>。示例:

cpp

QList<QPair<int, double>> list;
list.append(qMakePair(66, M_PI));

这等价于 QPair<T1, T2>(value1, value2),但通常需要更少的输入。

void swap(QPair<T1, T2> &lhs, QPair<T1, T2> &rhs)

重载函数。

交换 lhs 和 rhs 的内容。

此函数自 Qt 5.5 起引入。

bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

如果 p1 不等于 p2 则返回 true;否则返回 false。如果两个对的第一个数据成员不相等或第二个数据成员不相等,则它们比较为不相等。

此函数要求 T1 和 T2 类型实现 operator==()。

bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

如果 p1 小于 p2 则返回 true;否则返回 false。比较首先在 p1 和 p2 的第一个成员上进行;如果它们相等,则比较第二个成员以打破平局。

此函数要求 T1 和 T2 类型实现 operator<()。

QDataStream &operator<<(QDataStream &out, const QPair<T1, T2> &pair)

将 pair 写入流 out。

此函数要求 T1 和 T2 类型实现 operator<<()。

另请参阅序列化 Qt 数据类型。

bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

如果 p1 小于或等于 p2 则返回 true;否则返回 false。比较首先在 p1 和 p2 的第一个成员上进行;如果它们相等,则比较第二个成员以打破平局。

此函数要求 T1 和 T2 类型实现 operator<()。

bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

如果 p1 等于 p2 则返回 true;否则返回 false。如果两个对的第一个数据成员相等且第二个数据成员相等,则它们比较为相等。

此函数要求 T1 和 T2 类型实现 operator==()。

bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

如果 p1 大于 p2 则返回 true;否则返回 false。比较首先在 p1 和 p2 的第一个成员上进行;如果它们相等,则比较第二个成员以打破平局。

此函数要求 T1 和 T2 类型实现 operator<()。

bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)

如果 p1 大于或等于 p2 则返回 true;否则返回 false。比较首先在 p1 和 p2 的第一个成员上进行;如果它们相等,则比较第二个成员以打破平局。

此函数要求 T1 和 T2 类型实现 operator<()。

QDataStream &operator>>(QDataStream &in, QPair<T1, T2> &pair)

从流 in 读取一个对到 pair 中。

此函数要求 T1 和 T2 类型实现 operator>>()。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.大语言模型预备数学知识

大语言模型预备数学知识 复习一下在大语言模型中用到的矩阵和向量的运算&#xff0c;及概率统计和神经网络中常用概念。 矩阵的运算 矩阵 矩阵加减法 条件&#xff1a;行数列数相同的矩阵才能做矩阵加减法 数值与矩阵的乘除法 矩阵乘法 条件&#xff1a;矩阵A的列数 矩阵…

uniapp 设置手机不息屏

在使用 UniApp 开发应用时&#xff0c;有时需要在设备长时间未操作时实现息屏保护功能&#xff0c;以节省电量和保护屏幕。以下是如何在 UniApp 中实现这一功能的步骤。 示例一 // 保持屏幕常亮 uni.setKeepScreenOn({keepScreenOn: true });// 监听应用进入后台事件 uni.onH…

智能推荐系统:协同过滤与深度学习结合

智能推荐系统&#xff1a;协同过滤与深度学习结合 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 智能推荐系统&#xff1a;协同过滤与深度学习结合摘要引言技术原理对比1. 协同过滤算法&#xff1a;基于相似性的推…

使用Python和OpenCV实现图像识别与目标检测

在计算机视觉领域&#xff0c;图像识别和目标检测是两个非常重要的任务。图像识别是指识别图像中的内容&#xff0c;例如判断一张图片中是否包含某个特定物体&#xff1b;目标检测则是在图像中定位并识别多个物体的位置和类别。OpenCV是一个功能强大的开源计算机视觉库&#xf…

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…

Splash动态渲染技术全解析:从基础到企业级应用(2025最新版)

引言 在Web 3.0时代&#xff0c;87%的网站采用JavaScript动态渲染技术。传统爬虫难以应对Ajax加载、SPA应用等场景&#xff0c;Splash作为专业的JavaScript渲染服务&#xff0c;凭借​​Lua脚本控制​​和​​异步处理能力​​&#xff0c;已成为动态数据抓取的核心工具。本文…

【应用】Ghost Dance:利用惯性动捕构建虚拟舞伴

Ghost Dance是葡萄牙大学的一个研究项目&#xff0c;研究方向是探索人与人之间的联系&#xff0c;以及如何通过虚拟舞伴重现这种联系。项目负责人Cecilia和Rui利用惯性动捕创造出具有流畅动作的虚拟舞伴&#xff0c;让现实中的舞者也能与之共舞。 挑战&#xff1a;Ghost Danc…

广目软件GM DC Monitor

广目&#xff08;北京&#xff09;软件有限公司成立于2024年&#xff0c;技术和研发团队均来自于一家具有近10年监控系统研发的企业。广目的技术团队一共实施了9家政府单位、1家股份制银行、1家芯片制造企业的数据中心监控预警项目。这11家政企单位由2家正部级、1家副部级、6家…

12-Oracle 23ai Vector 使用ONNX模型生成向量嵌入

一、Oracle 23ai Vector Embeddings 核心概念​ 向量嵌入&#xff08;Vector Embeddings&#xff09;​​ -- 将非结构化数据&#xff08;文本/图像&#xff09;转换为数值向量 - - 捕获数据的语义含义而非原始内容 - 示例&#xff1a;"数据库" → [0.24, -0.78, 0.5…

用 NGINX 构建高效 POP3 代理`ngx_mail_pop3_module`

一、模块定位与作用 协议代理 ngx_mail_pop3_module 让 NGINX 能够充当 POP3 代理&#xff1a;客户端与后端 POP3 服务器之间的所有请求均转发到 NGINX&#xff0c;由 NGINX 负责与后端会话逻辑。认证方式控制 通过 pop3_auth 指令指定允许客户端使用的 POP3 认证方法&#xf…

每日算法 -【Swift 算法】三数之和

Swift&#xff5c;三数之和&#xff08;3Sum&#xff09;详细题解 注释 拓展&#xff08;LeetCode 15&#xff09; ✨题目描述 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a, b, c&#xff0c;使得 a b c 0。请你找出所有和为 0 且不重…

服务器磁盘空间被Docker容器日志占满处理方法

事发场景&#xff1a; 原本正常的服务停止运行了&#xff0c;查看时MQTT服务链接失败&#xff0c;查看对应的容器服务发现是EMQX镜像停止运行了&#xff0c;重启也是也报错无法正常运行&#xff0c;报错如下图&#xff1a; 报错日志中连续出现两个"no space left on devi…

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…

Linux中shell编程表达式和数组讲解

一、表达式 1.1 测试表达式 样式1: test 条件表达式 样式2: [ 条件表达式 ] 注意&#xff1a;以上两种方法的作用完全一样&#xff0c;后者为常用。但后者需要注意方括号[、]与条件表达式之间至少有一个空格。test跟 [] 的意思一样条件成立&#xff0c;状态返回值是0条件不成…

深入了解JavaScript当中如何确定值的类型

JavaScript是一种弱类型语言&#xff0c;当你给一个变量赋了一个值&#xff0c;该值是什么类型的&#xff0c;那么该变量就是什么类型的&#xff0c;并且你还可以给一个变量赋多种类型的值&#xff0c;也不会报错&#xff0c;这就是JavaScript的内部机制所决定的&#xff0c;那…

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信拓扑与操作 BR/EDR(经典蓝牙)和 BLE

目录 1. BR/EDR&#xff08;经典蓝牙&#xff09;网络结构微微网&#xff08;Piconet&#xff09;散射网&#xff08;Scatternet&#xff09;蓝牙 BR/EDR 拓扑结构示意图 2. BLE&#xff08;低功耗蓝牙&#xff09;网络结构广播器与观察者&#xff08;Broadcaster and Observer…

C++虚函数表(虚表Virtual Table,简称vtable、VFT)(编译器为支持运行时多态(动态绑定)而自动生成的一种内部数据结构)虚函数指针vptr

文章目录 **1. 虚函数表的核心概念**- **虚函数表&#xff08;vtable&#xff09;**&#xff1a;- **虚函数指针&#xff08;vptr&#xff09;**&#xff1a; **2. 虚函数表的生成与工作流程****生成时机**- **当一个类中至少有一个虚函数时**&#xff0c;编译器会为该类生成一…

使用Python和TensorFlow实现图像分类

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…