Qt5 C++ QMap使用總結

文章目錄

      • 功能解釋
      • 代碼使用案例
      • 代碼解釋
      • 注意事項
      • 代碼例子參考

功能解釋

QList<T> QMap::values() const
Returns a list containing all the values in the map, in ascending order of their keys. If a key is associated with multiple values, all of its values will be in the list, and not just the most recently inserted one.
See also keys() and value().

QList<T> QMap::values() constQMap 類的一個成員函數,其作用是返回一個包含 QMap 中所有值的列表。這里的 T 代表 QMap 中存儲的值的類型。

該函數會按照鍵的升序排列來收集所有的值。如果一個鍵關聯了多個值(在某些特殊的多值映射場景下),那么這個鍵對應的所有值都會被包含在返回的列表中,而不僅僅是最近插入的那個值。

此外,文檔還提到了可以參考 keys() 函數(用于返回 QMap 中所有鍵的列表)和 value() 函數(用于根據鍵獲取對應的值)。

代碼使用案例

以下是一個使用 QMapvalues() 函數的詳細示例代碼:

#include <QCoreApplication>
#include <QMap>
#include <QList>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 創建一個 QMap,鍵為 QString 類型,值為 int 類型QMap<QString, int> myMap;// 向 QMap 中插入一些鍵值對myMap.insert("apple", 10);myMap.insert("banana", 20);myMap.insert("cherry", 30);// 調用 values() 函數獲取包含所有值的列表QList<int> valueList = myMap.values();// 輸出獲取到的值列表qDebug() << "Values in the map:";for (int value : valueList) {qDebug() << value;}return a.exec();
}

代碼解釋

  1. 包含必要的頭文件

    • QCoreApplication:用于創建 Qt 應用程序的核心對象。
    • QMap:提供了關聯數組(鍵值對)的功能。
    • QList:用于存儲值的列表。
    • QDebug:用于在控制臺輸出調試信息。
  2. 創建 QMap 并插入鍵值對

    • QMap<QString, int> myMap;:創建一個 QMap 對象,鍵的類型為 QString,值的類型為 int
    • myMap.insert("apple", 10); 等語句:向 QMap 中插入不同的鍵值對。
  3. 調用 values() 函數

    • QList<int> valueList = myMap.values();:調用 values() 函數獲取 QMap 中所有值的列表,并將其存儲在 valueList 中。
  4. 遍歷并輸出值列表

    • 使用范圍 for 循環遍歷 valueList,并使用 qDebug() 輸出每個值。

注意事項

  • values() 函數是一個常量成員函數,意味著它不會修改 QMap 的內容。
  • 返回的列表中值的順序是按照鍵的升序排列的。在這個例子中,由于鍵是字符串,它們會按照字典序排列。

代碼例子參考

所以能修改Map的值的代碼如下:

#include <QString>
#include <QDebug>// 定義 User 類
class User {
public:// 構造函數,用于初始化用戶信息User(const QString& name = "", int age = 0) : m_name(name), m_age(age) {}// 獲取用戶姓名QString getName() const {return m_name;}// 設置用戶姓名void setName(const QString& name) {m_name = name;}// 獲取用戶年齡int getAge() const {return m_age;}// 設置用戶年齡void setAge(int age) {m_age = age;}private:QString m_name;int m_age;
};
#include <QMap>
#include <QString>
#include <QDebug>// 上面定義的 User 類代碼放在這里int main() {// 創建一個 QMap<QString, User> 對象QMap<QString, User> userMap;// 向 map 中插入元素userMap.insert("user1", User("Alice", 25));userMap.insert("user2", User("Bob", 30));userMap.insert("user3", User("Charlie", 35));// 輸出修改前的信息qDebug() << "修改前的信息:";for (const auto& key : userMap.keys()) {const User& user = userMap.value(key);qDebug() << "Key:" << key << ", Name:" << user.getName() << ", Age:" << user.getAge();}// 使用迭代器遍歷 QMap 并修改 Value 的值for (auto it = userMap.begin(); it != userMap.end(); ++it) {// 修改用戶的年齡,每個用戶年齡加 1User& user = it.value();user.setAge(user.getAge() + 1);// 修改用戶的姓名,在原姓名后添加 "_new"user.setName(user.getName() + "_new");}// 輸出修改后的信息qDebug() << "\n修改后的信息:";for (const auto& key : userMap.keys()) {const User& user = userMap.value(key);qDebug() << "Key:" << key << ", Name:" << user.getName() << ", Age:" << user.getAge();}return 0;
}
#include <QMap>
#include <QString>
#include <QDebug>// User 類定義放在這里int main() {// 創建一個 QMap<QString, User> 對象QMap<QString, User> userMap;// 向 map 中插入元素userMap.insert("user1", User("Alice", 25));userMap.insert("user2", User("Bob", 30));userMap.insert("user3", User("Charlie", 35));// 使用迭代器遍歷 QMap// 方法一:使用 QMap::iterator(非 const 迭代器)qDebug() << "使用 QMap::iterator 遍歷:";for (QMap<QString, User>::iterator it = userMap.begin(); it != userMap.end(); ++it) {const QString& key = it.key();const User& user = it.value();qDebug() << "Key:" << key << ", Name:" << user.getName() << ", Age:" << user.getAge();}// 方法二:使用 QMap::const_iterator(const 迭代器)qDebug() << "\n使用 QMap::const_iterator 遍歷:";for (QMap<QString, User>::const_iterator cit = userMap.constBegin(); cit != userMap.constEnd(); ++cit) {const QString& key = cit.key();const User& user = cit.value();qDebug() << "Key:" << key << ", Name:" << user.getName() << ", Age:" << user.getAge();}// 方法三:使用范圍-based for 循環(C++11 及以上)qDebug() << "\n使用范圍-based for 循環遍歷:";for (const auto& pair : userMap) {const QString& key = pair.first;const User& user = pair.second;qDebug() << "Key:" << key << ", Name:" << user.getName() << ", Age:" << user.getAge();}return 0;
}
void RecalculateVoltage()
{QMutexLocker locker(&m_lock);QMap<QString, TEST_DATA>::iterator it;for (it = m_mapPath2Data.begin(); it != m_mapPath2Data.end(); ++it){TEST_DATA& stTestData = it.value();//...}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71360.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71360.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

測試用例總結

一、通用測試用例八要素   1、用例編號&#xff1b;    2、測試項目&#xff1b;   3、測試標題&#xff1b; 4、重要級別&#xff1b;    5、預置條件&#xff1b;    6、測試輸入&#xff1b;    7、操作步驟&#xff1b;    8、預期輸出 二、具體分析通…

不用寫代碼,批量下載今日頭條文章導出excel和pdf

前幾天有人問我怎么批量抓取今日頭條某個號的所有文章數據&#xff0c;需要文章鏈接&#xff0c;標題和時間&#xff0c;但是不會寫代碼&#xff0c;于是我寫了個簡單的教程 這里以渤海小吏為例 首先用edge瀏覽器安裝web-scraper瀏覽器擴展 然后打開瀏覽器控制臺&#xff0c;找…

Starrocks 寫入報錯 primary key memory usage exceeds the limit

背景 本文基于 StarRocks 3.3.5 單個Starrocks BE配置是 16CU 32GB 在Flink Yaml CDC 任務往 Starrocks寫數據的過程中&#xff0c;突然遇到了primary key memory usage exceeds the limit 問題&#xff0c;具體如下&#xff1a; java.lang.RuntimeException: com.starrocks.…

Django:文件上傳時報錯in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.

即&#xff1a;使用Content-Security-Policy 1.安裝Django CSP中間件&#xff1a; pip install django-csp 2.更改項目配置&#xff1a; # settings.py MIDDLEWARE [...csp.middleware.CSPMiddleware,... ]CSP_DEFAULT_SRC ("self",) CSP_FRAME_ANCESTORS (&q…

利用Adobe Acrobat 實現PPT中圖片分辨率的提升

1. 下載適用于 Windows 的 64 位 Acrobat 注冊方式參考&#xff1a;https://ca.whu.edu.cn/knowledge.html?type1 2. 將ppt中需要提高分辨率的圖片復制粘貼到新建的pptx問價中&#xff0c;然后執行“文件—>導出---->創建PDF、XPS文檔” 3. 我們會發現保存下來的distrib…

【Python爬蟲】爬取公共交通路網數據

程序來自于Github&#xff0c;以下這篇博客作為完整的學習記錄&#xff0c;也callback上一篇爬取公共交通站點的博文。 Bardbo/get_bus_lines_and_stations_data_from_gaode: 這個項目是基于高德開放平臺和公交網獲取公交線路及站點數據&#xff0c;并生成shp文件&#xff0c;…

Stable Diffusion模型高清算法模型類詳解

Stable Diffusion模型高清算法模型類詳細對比表 模型名稱核心原理適用場景參數建議顯存消耗細節增強度優缺點4x-UltraSharp殘差密集塊(RDB)結構優化紋理生成真實人像/建筑攝影重繪幅度0.3-0.4&#xff0c;分塊尺寸768px★★★★★☆皮膚紋理細膩&#xff0c;但高對比場景易出現…

VUE_使用Vite構建vue項目

創建項目 // 安裝vite npm install vite// 創建名為vite-app的項目 npm create vite vite-app --template vue// 到項目目錄 cd vite-app// 安裝依賴 npm install// 運行項目 npm run dev// 打包 npm run build// 打包預覽 npm run serve 增加路由 // 安裝路由 npm add vue-r…

ctf網絡安全賽題

CTF簡介 CTF&#xff08;Capture The Flag&#xff09;中文一般譯作奪旗賽&#xff0c;在網絡安全領域中指的是網絡安全技術人員之間進行技術競技的一種比賽形式。CTF起源于1996年DEFCON全球黑客大會&#xff0c;以代替之前黑客們通過互相發起真實攻擊進行技術比拼的方式。發展…

【朝夕教育】《鴻蒙原生應用開發從零基礎到多實戰》004-TypeScript 中的泛型

標題詳情作者簡介愚公搬代碼頭銜華為云特約編輯&#xff0c;華為云云享專家&#xff0c;華為開發者專家&#xff0c;華為產品云測專家&#xff0c;CSDN博客專家&#xff0c;CSDN商業化專家&#xff0c;阿里云專家博主&#xff0c;阿里云簽約作者&#xff0c;騰訊云優秀博主&…

性能測試監控工具jmeter+grafana

1、什么是性能測試監控體系&#xff1f; 為什么要有監控體系&#xff1f; 原因&#xff1a; 1、項目-日益復雜&#xff08;內部除了代碼外&#xff0c;還有中間件&#xff0c;數據庫&#xff09; 2、一個系統&#xff0c;背后可能有多個軟/硬件組合支撐&#xff0c;影響性能的因…

互聯網時代如何保證數字足跡的安全,以防個人信息泄露?

用戶在網絡上所做的幾乎所有事情&#xff0c;包括瀏覽、社交媒體活動、搜索查詢、在線訂閱&#xff0c;甚至購物&#xff0c;都會留下一條數據線索&#xff0c;這些數據可用于創建用戶在線身份的詳細檔案。如果這些信息暴露&#xff0c;惡意行為者可能會利用它們將用戶置于各種…

C# IEquatable<T> 使用詳解

總目錄 前言 在 C# 開發中&#xff0c;IEquatable<T> 是一個泛型接口&#xff0c;用于定義類型的相等性比較邏輯。通過實現 IEquatable<T>&#xff0c;可以為自定義類型提供高效的、類型安全的相等性比較方法。本文將詳細介紹 IEquatable<T> 的使用方法、應…

web第四天

Dom操作元素 innerText、innerHTML、value(input and textarea用到) 更改屬性&#xff0c;樣式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…

LabVIEW基于IMAQ實現直線邊緣檢測

本程序基于 NI Vision Development 模塊&#xff0c;通過 IMAQ Find Straight Edges 函數&#xff0c;在指定 ROI&#xff08;感興趣區域&#xff09; 內檢測多條直線邊緣。用戶可 動態調整檢測參數 或 自定義ROI&#xff0c;實時觀察識別效果&#xff0c;適用于 高精度視覺檢測…

費曼學習法13 - 數據表格的魔法:Python Pandas DataFrame 詳解 (Pandas 基礎篇)

第二篇&#xff1a;數據表格的魔法&#xff1a;Python Pandas DataFrame 詳解 (Pandas 基礎篇) 開篇提問&#xff1a; 回憶一下&#xff0c;我們上一篇文章學習了 Pandas 的一維數據結構 Series&#xff0c;它可以看作是帶 “標簽” 的列表。 但現實世界中的數據&#xff0c;…

一周學會Flask3 Python Web開發-在模板中渲染WTForms表單視圖函數里獲取表單數據

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 為了能夠在模板中渲染表單&#xff0c;我們需要把表單類實例傳入模板。首先在視圖函數里實例化表單類LoginForm&#xff0c;然…

小紅書湖倉架構的躍遷之路

作者&#xff1a;李鵬霖(丁典)&#xff0c;小紅書-研發工程師&#xff0c;StarRocks Contributor & Apache Impala Committer 本文整理自小紅書工程師在 StarRocks 年度峰會上的分享&#xff0c;介紹了小紅書自助分析平臺中&#xff0c;StarRocks 與 Iceberg 結合后&#x…

數據結構第五節:排序

1.常見的排序算法 插入排序&#xff1a;直接插入排序、希爾排序 選擇排序&#xff1a;直接選擇排序、堆排序 交換排序&#xff1a;冒泡排序、快速排序 歸并排序&#xff1a;歸并排序 排序的接口實現&#xff1a; // 1. 直接插入排序 void InsertSort(int* a, int n); // 2. 希…

BambuStudio學習筆記:FaceDetector類

面檢測器類解析 這段代碼定義了一個名為 FaceDetector 的 C 類&#xff0c;用于處理三維模型中的面檢測。以下是該類的具體說明&#xff1a; 頭文件保護 #ifndef slic3r_FaceDetector_hpp_ #define slic3r_FaceDetector_hpp_這部分代碼防止頭文件被多次包含。 命名空間聲明…