欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT的幾種QMap插入順序說(shuō)明

 更新時(shí)間:2025年09月07日 14:04:59   作者:冷凝女子  
本文主要介紹了QT的幾種QMap插入順序說(shuō)明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1 在QMap中按順序插入QString類型的鍵

QMap本身就會(huì)自動(dòng)按鍵排序,但對(duì)于QString類型的鍵,默認(rèn)是按照字母順序(字典序)排序的。如果你需要自定義排序順序,可以通過(guò)以下幾種方法實(shí)現(xiàn):

1.1 使用默認(rèn)的字母順序排序

如果你只需要普通的字母順序排序,QMap已經(jīng)自動(dòng)實(shí)現(xiàn)了:

QMap<QString, int> map;
map.insert("banana", 2);
map.insert("apple", 1);
map.insert("cherry", 3);

// 遍歷時(shí)會(huì)自動(dòng)按字母順序輸出:apple, banana, cherry
for (auto it = map.begin(); it != map.end(); ++it) {
    qDebug() << it.key() << ":" << it.value();
}

1.2 自定義排序規(guī)則

如果需要自定義排序順序,可以提供一個(gè)比較函數(shù):

// 自定義比較函數(shù) - 按字符串長(zhǎng)度排序
struct LengthCompare {
    bool operator()(const QString &a, const QString &b) const {
        return a.length() < b.length();
    }
};

// 使用自定義比較函數(shù)的QMap
QMap<QString, int, LengthCompare> lengthOrderedMap;
lengthOrderedMap.insert("banana", 2);
lengthOrderedMap.insert("apple", 1);
lengthOrderedMap.insert("cherry", 3);

// 遍歷時(shí)會(huì)按字符串長(zhǎng)度輸出:apple, banana, cherry

1.3 保持插入順序

如果需要保持插入順序而不是排序順序,可以考慮:

方案1:使用QMap+QList組合

QMap<QString, int> map;
QList<QString> insertionOrder;

void insertInOrder(const QString &key, int value) {
    if (!map.contains(key)) {
        insertionOrder.append(key);
    }
    map.insert(key, value);
}

// 遍歷時(shí)按插入順序
for (const QString &key : insertionOrder) {
    qDebug() << key << ":" << map.value(key);
}

方案2:使用QHash+QList組合

QHash<QString, int> hash;
QList<QString> insertionOrder;

void insertInOrder(const QString &key, int value) {
    if (!hash.contains(key)) {
        insertionOrder.append(key);
    }
    hash.insert(key, value);
}

方案3:使用Qt 5.14+的QSequentialIterable容器

#include <QSequentialIterable>
// 但這不是一個(gè)獨(dú)立的容器,需要結(jié)合其他方法使用

1.4 使用第三方庫(kù)或C++17的std::map

如果你可以使用C++17,可以考慮:

#include <map>
#include <string>

std::map<std::string, int, YourCustomCompare> orderedMap;

總結(jié)

1. 默認(rèn)字母順序:直接使用QMap<QString, T>
2. 自定義排序:提供比較函數(shù)作為QMap的第三個(gè)模板參數(shù)
3. 保持插入順序:使用QMap+QList或QHash+QList組合
4. C++17選項(xiàng):考慮std::map with custom comparator

對(duì)于大多數(shù)情況,QMap的默認(rèn)排序行為已經(jīng)足夠,如果需要保持插入順序,組合使用QList來(lái)記錄順序是最常見(jiàn)的解決方案。

到此這篇關(guān)于QT的幾種QMap插入順序說(shuō)明的文章就介紹到這了,更多相關(guān)QT QMap插入順序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • opencv3/C++圖像邊緣提取方式

    opencv3/C++圖像邊緣提取方式

    今天小編就為大家分享一篇opencv3/C++圖像邊緣提取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • C語(yǔ)言數(shù)字圖像處理之直方圖均衡化

    C語(yǔ)言數(shù)字圖像處理之直方圖均衡化

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言數(shù)字圖像處理之直方圖均衡化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解C++ string常用截取字符串方法

    詳解C++ string常用截取字符串方法

    這篇文章主要介紹了C++ string常用截取字符串方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C++中 string 中的常用方法使用心得

    C++中 string 中的常用方法使用心得

    這篇文章主要介紹了C++中 string 中的常用方法使用心得,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言科學(xué)計(jì)算入門之矩陣乘法的相關(guān)計(jì)算

    C語(yǔ)言科學(xué)計(jì)算入門之矩陣乘法的相關(guān)計(jì)算

    這篇文章主要介紹了C語(yǔ)言科學(xué)計(jì)算入門之矩陣乘法的相關(guān)計(jì)算,文章中還介紹了矩陣相關(guān)的斯特拉森算法的實(shí)現(xiàn),需要的朋友可以參考下
    2015-12-12
  • QTableWidget設(shè)置只讓某一列可編輯的實(shí)現(xiàn)

    QTableWidget設(shè)置只讓某一列可編輯的實(shí)現(xiàn)

    本文介紹了如何將QTableWidget的某一列設(shè)置為可編輯,以便用戶可以輸入自定義數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • C語(yǔ)言大廠面試技巧及strcpy()函數(shù)示例詳解

    C語(yǔ)言大廠面試技巧及strcpy()函數(shù)示例詳解

    這篇文章主要為大家介紹了C語(yǔ)言面試技巧,以strcpy()函數(shù)為示例進(jìn)行分析詳解,有需要沖刺大廠的朋友們可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 淺談C++中的引用和指針

    淺談C++中的引用和指針

    這篇文章主要介紹了淺談C++中的引用和指針,C++允許為已定義的變量再起一個(gè)新的別名,稱為變量的引用名,引用名看起來(lái)像是一個(gè)變量名,但它是一種特殊變量,稱為引用變量,或簡(jiǎn)稱為引用,需要的朋友可以參考下
    2023-08-08
  • VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)

    VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)

    本文主要介紹了VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ),實(shí)現(xiàn)了視頻,拍照,保存這三個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++中l(wèi)ist的使用場(chǎng)景詳解

    C++中l(wèi)ist的使用場(chǎng)景詳解

    這篇文章主要介紹了C++標(biāo)準(zhǔn)庫(kù)中的`std::list`容器,包括其內(nèi)部結(jié)構(gòu)、與其它容器的對(duì)比、核心使用場(chǎng)景、性能分析、特殊應(yīng)用場(chǎng)景、使用陷阱與最佳實(shí)踐,需要的朋友可以參考下
    2025-05-05

最新評(píng)論