当前位置: 首页 > news >正文

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.xdnf.cn/news/902017.html

相关文章:

  • Bootstrap 4 文件结构与 API 使用指南
  • 前端事件循环深度解析
  • 北京大学肖臻老师《区块链技术与应用》公开课:12-BTC-比特币的匿名性
  • LeetCode 热题 100 34. 在排序数组中查找元素的第一个和最后一个位置
  • vscode .husky/pre-commit: line 4: npx: command not found
  • 3 个优质的终端 GitHub 开源工具
  • 408第一季 - 数据结构 - 栈与队列的应用
  • 数的计算,C++实现
  • Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
  • Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)
  • 《C语言·源初法典》---C语言基础(上)
  • DAY45 可视化
  • 实践指南:从零开始搭建RAG驱动的智能问答系统
  • Vue在线预览excel、word、ppt等格式数据。
  • 【递归、搜索与回溯】综合练习(四)
  • 鼠标的拖动效果
  • 麒麟v10系统的docker重大问题解决-不支持容器名称解析
  • 【Bluedroid】蓝牙启动之 SMP_Init 源码解析
  • 提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
  • MongoDB慢查询临时开启方法讲解
  • elasticsearch基本操作笔记
  • 数据库优化秘籍:解锁性能提升的 “潘多拉魔盒”
  • vue3前端实现导出Excel功能
  • 【设计模式-5】设计模式的总结
  • golang入门
  • SSIM、PSNR、LPIPS、MUSIQ、NRQM、NIQE 六个图像质量评估指标
  • 程序代码篇---智能家居传感器
  • C++.OpenGL (5/64)变换(Transformation)
  • Prompt Engineering Notes
  • GIT(AI回答)