当前位置: 首页 > 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>>()。

相关文章:

  • Redis——1、服务端高并发分布式结构演进之路
  • Vue基础(14)_列表过滤、列表排序
  • web框架(Django 与 FastAPI)
  • linux 故障处置通用流程-36计-28-37
  • leetcode 2434. 使用机器人打印字典序最小的字符串 中等
  • 语音合成之十九 为什么对数行列式的值可以作为Flow-based模型loss?
  • Docker部署Hive大数据组件
  • 03 mysql 的环境搭建
  • Python实现快速排序的三种经典写法及算法解析
  • kafka消息积压排查
  • 在 Kali 上打造渗透测试专用的 VSCode 环境
  • RabbitMQ 学习
  • Power Query动态追加查询
  • 品牌坚持电商控价的底层逻辑与实施价值
  • 【Elasticsearch】映射:Nested 类型
  • 神经网络-Day46
  • 单元测试与QTestLib框架使用
  • Python打卡训练营学习记录Day46
  • WiFi通信应用开发【保姆级】+配置ESP8266芯片的WiFi station和soft-AP + station工作模式!!!
  • 基于 actix-web 框架的简单 demo
  • 橙子流量网站/今日特大军事新闻
  • 网站建设的整体流程/百度快速收录提交工具
  • 网站建设万网/成都最新疫情
  • 福安做网站/在线检测网站安全
  • 北京SEO网站优化公司/百度seo优化排名
  • 手机网站设计建设服务/谷歌广告推广怎么做