QMap和QHash類
QMap和QHash具有非常相似的功能,它們的差別僅在於:
1.QHash具有比QMap更快的查詢速度.
2.QHash以任意的順序儲存資料項,而QMap總是按照鍵 key的順序儲存資料.
3.QHash的鍵型別 Key必須提供operator==()和一個全域性的qHash(Key)函式,而QMap的鍵型別Key
必須提供一個operator<()函式。
兩者時間複雜度比較
容器類 | 鍵查詢 | 插入 | ||
平均 | 最壞 | 平均 | 最壞 | |
QMap | O(log n) | O(log n) | O(log n) | O(log n) |
QHash | Amort.O(1) | O(n) | Amort.O(1) | O(n) |
QMap類:
QMap<Key ,T>提供了一個從型別為Key的鍵到型別為T的值得對映。
QMap儲存的資料形式是一個鍵對應一個值,並且按照鍵Key的順序儲存資料。
QMap的使用例子
#include <QCoreApplication>
#include<QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMap<QString,QString> map;
map.insert("beijing","111"); //map插入字串"beijing" "111"
map.insert("shanghai","222"); //map插入字串"shanghai" "222"
QMap<QString,QString>::const_iterator i;
for(i=map.constBegin();i!=map.constEnd();i++) //迭代器遍歷輸出字串
qDebug()<<" "<<i.key()<<" "<<i.value();
QMap<QString,QString>::iterator mi;
mi=map.find("beijing"); //遍歷查詢"beijing" 的map
if(mi!=map.end())
mi.value()="001"; //替換"111"
QMap<QString,QString>::const_iterator modi;
qDebug()<<" ";
for(modi=map.constBegin();modi!=map.constEnd();modi++) //再次遍歷輸出map的鍵值
{
qDebug()<<" "<<modi.key()<<" "<<modi.value();
}
return a.exec();
}
程式輸出:
STL風格迭代器的兩種分類:
容器類 | 只讀迭代器 | 讀寫迭代器 |
QMap<key,T>,QMultiMap<Key,T> | QMap<key,T>::const_iterator | QMap<key,T>::iterator |
QHash<Key T>,QMultiHash<Key,T> | QHash<Key,T>::const_iterator | QHash<Key,T>::iterator |
關於QMap和QHash的用法及成員函式詳解可參考Qt文件
http://doc.qt.io/qt-5/qmap.html
http://doc.qt.io/qt-5/qhash.html
相關文章
- QMap
- BigInter類和Decimallei類Decimal
- python建立類和類方法Python
- 實體類,邊界類和控制類
- 類和物件物件
- Java和ABAP裡的外部類和內部類Java
- SQLAlchemy Table(表)類方式 – Table類和Column類SQL
- Qt容器類QList、QLinkedList和QVector類QT
- 類和類之間的比較
- Java - 24 類變數和類方法Java變數
- locustfile中的User類和HttpUser類HTTP
- Java 物件和類Java物件
- Scala 類和物件物件
- 【Kotlin】類和物件Kotlin物件
- StringBuffer 和 StringBuilder 類UI
- 類和物件(中)物件
- Java 類和物件Java物件
- 類和物件案例物件
- 類和例項
- Java物件和類Java物件
- 抽象類和介面抽象
- java語言邏輯類、引數類和字元類Java字元
- URLConnection類,HttpURLConnection類的使用和總結HTTP
- C#介面、抽象類、普通類和繼承(子類與父類)都有其特定的用途和場景C#抽象繼承
- c++類和物件C++物件
- C++ 類和物件C++物件
- 6.類和物件物件
- 多型和抽象類多型抽象
- 類圖和物件圖物件
- 認識類和物件物件
- 抽象方法和抽象類抽象
- Java Number和Math 類Java
- Java StringBuffer 和 StringBuilder 類JavaUI
- 偽類和偽元素
- redis配置和工具類Redis
- python 類和例項Python
- SystemVerilog 類和物件(三)物件
- 介面和抽象類 (abstract)抽象