自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

QT QMap介紹與使用

移動開發(fā)
本文介紹的是QMap介紹與使用,值得一提的問題是QMap的值和鍵是一對一對的,必須要一對一對的插入。

Qt中的QMap介紹與使用,在壇子里逛了一圈,發(fā)現(xiàn)在使用QMap中,出現(xiàn)過很多的問題,Map是一個很有用的數(shù)據(jù)結(jié)構(gòu)。它以“鍵-值”的形式保存數(shù)據(jù)。在使用的時候,通過提供字符標(biāo)示(鍵)即可得到想要的數(shù)據(jù)。這個“數(shù)據(jù)”即可以是一個字符串,也可以是任意對象,當(dāng)然也包括自己定義的類對象。說明:map是以值傳遞的形式保存數(shù)據(jù)的。

1. 基本應(yīng)用

下面以“鍵-值”都是QString的例子說明QMap的基本使用方法。更詳細(xì)的說明,請查看《Qt幫助手冊》或其他資源。

  1. #include <qmap.h> 
  2. #include <iostream> 
  3. using namespace std;  
  4. class MapTest  
  5. {  
  6. public:  
  7.     void showMap()  
  8.     {  
  9. if(!m_map.isEmpty()) return; //判斷map是否為空  
  10. m_map.insert("111", "aaa"); //向map里添加一對“鍵-值”  
  11. if(!m_map.contains("222")) //判斷map里是否已經(jīng)包含某“鍵-值”  
  12.      m_map.insert("222", "bbb");  
  13. m_map["333"] = "ccc"; //另一種添加的方式  
  14. qDebug("map[333] , value is : " + m_map["333"]); //這種方式既可以用于添加,也可以用于獲取,但是你必須知道它確實存在  
  15.  
  16. if(m_map.contains("111")){  
  17.      QMap<QString,QString>::iterator it = m_map.find("111"); //找到特定的“鍵-值”對  
  18.      qDebug("find 111 , value is : " + it.data()); //獲取map里對應(yīng)的值  
  19. }  
  20. cout<< endl;  
  21. qDebug("size of this map is : %d", m_map.count()); //獲取map包含的總數(shù)  
  22. cout<< endl;  
  23. QMap<QString,QString>::iterator it; //遍歷map  
  24. for ( it = m_map.begin(); it != m_map.end(); ++it ) {  
  25.             qDebug( "%s: %s", it.key().ascii(), it.data().ascii()); //用key()和data()分別獲取“鍵”和“值”  
  26.         }  
  27.  
  28. m_map.clear(); //清空map  
  29.     }  
  30. private:  
  31.     QMap<QString,QString> m_map; //定義一個QMap對象  
  32. }; 

調(diào)用類函數(shù)showMap(),顯示結(jié)果:

  1. map[333] , value is : ccc  
  2. find 111 , value is : aaa  
  3. size of this map is : 3  
  4. 111: aaa  
  5. 222: bbb  
  6. 333: ccc 

2. 對象的使用

map當(dāng)中還可以保存類對象、自己定義類對象,例子如下(摘自QT幫助文檔《Qt Assistant》,更詳細(xì)的說明參考之):
以注釋形式說明

 

  1. #include <qstring.h> 
  2. #include <qmap.h> 
  3. #include <qstring.h> 
  4.  
  5. //自定義一個Employee類,包含fn、sn、sal屬性  
  6. class Employee  
  7. {  
  8. public:  
  9.     Employee(): sn(0) {}  
  10.     Employee( const QString& forename, const QString& surname, int salary )  
  11.         : fn(forename), sn(surname), sal(salary)  
  12.     { }  
  13.  
  14.     QString forename() const { return fn; }  
  15.     QString surname() const { return sn; }  
  16.     int salary() const { return sal; }  
  17.     void setSalary( int salary ) { sal = salary; }  
  18.  
  19. private:  
  20.     QString fn;  
  21.     QString sn;  
  22.     int sal;  
  23. };  
  24.  
  25. int main(int argc, char **argv)  
  26. {  
  27.     QApplication app( argc, argv );  
  28.  
  29.     typedef QMap<QString, Employee> EmployeeMap; //自定義一個map類型,值為EmployeeMap對象  
  30.     EmployeeMap map;  
  31.  
  32.     map["JD001"] = Employee("John", "Doe", 50000); //向map里插入鍵-值  
  33.     map["JW002"] = Employee("Jane", "Williams", 80000);  
  34.     map["TJ001"] = Employee("Tom", "Jones", 60000);  
  35.  
  36.     Employee sasha( "Sasha", "Hind", 50000 );  
  37.     map["SH001"] = sasha;  
  38.     sasha.setSalary( 40000 ); //修改map值的內(nèi)容,因為map采用值傳遞,所以無效  
  39.  
  40.     //批量打印  
  41.     EmployeeMap::Iterator it;  
  42.     for ( it = map.begin(); it != map.end(); ++it ) {  
  43.         printf( "%s: %s, %s earns %d\n",  
  44.                 it.key().latin1(),  
  45.                 it.data().surname().latin1(),  
  46.                 it.data().forename().latin1(),  
  47.                 it.data().salary() );  
  48.     }  
  49.     return 0;  
  1. Program output:   
  2. JD001: Doe, John earns 50000  
  3. JW002: Williams, Jane earns 80000  
  4. SH001: Hind, Sasha earns 50000  
  5. TJ001: Jones, Tom earns 60000 

小結(jié):QMap介紹與使用的內(nèi)容介紹完了,基本是在講QMap的使用,那么通過本文希望你能了解更多關(guān)于QMap的知識。

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-16 10:22:24

Qt QHash QMap

2021-06-30 07:19:36

Netty簡單使用

2012-04-19 13:55:19

TitaniumTiMVC

2011-06-30 18:15:36

Qt 線程 同步

2011-08-29 10:22:48

QtWebkit 模塊HTML文檔

2011-06-29 15:02:25

Qt 模板庫

2011-06-22 17:09:50

QT 進(jìn)程 通信

2011-06-30 14:04:41

Qt IP地址 接口

2011-06-20 11:14:09

Qt QxtGlobalS 熱鍵

2011-06-24 10:05:51

QT 對象 父對象

2011-06-29 14:56:28

Qt Creator 快捷捷

2011-08-29 10:34:36

QTQWebKitJavaScript

2009-12-18 13:43:22

2012-02-23 10:28:12

MySQL

2021-05-06 21:26:00

BcacheCeph存儲

2011-07-01 16:04:45

Qt Python

2011-06-14 14:41:14

Python Qt

2022-05-22 09:48:47

微服務(wù)Sentinel

2011-03-23 10:15:43

Opera 11.10

2011-06-21 14:01:07

QT 界面庫 Embedded
點贊
收藏

51CTO技術(shù)棧公眾號