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
繁體地址,請注明出處:http://hk.pswp.cn/web/82741.shtml
英文地址,請注明出處:http://en.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;忍不住分享一下給大家。點擊鏈接跳轉到網站人工智能及編程語言學習教程。讀者們可以通過里面的文章詳細了解一下人工智能及其編程等教程和學習方法。下面開始對正文內容的…