QMap 的增刪改查


map 是一種數據容器,它提供一種由key 到 value 的映射。
map 的key 是唯一的, 也是有序的。map 通常由近似平衡的紅黑樹來實現。
key 的有序性,使得插入,查找節點比較有效。map 的操作(增刪改查),通常就是
對節點的操作(增刪改查)。當然,map 也有創建(new)和銷毀(delete)操作。

QMap 是Qt 實現的一種map, 與c++ stl map 使用方法一致。

QMap 的增刪改查,

程序簡單,就直接上代碼了,附上運行結果。

 

[cpp]  view plain  copy
 
  1. #include <QDebug>  
  2.   
  3. void showmap(QString str);  
  4. QMap<int, int> map;  
  5. int main(int argc, char *argv[])  
  6. {  
  7.     (void) argc;  
  8.     (void)argv;  
  9.     QMap<int, int>::iterator it;  
  10. //增加  
  11.     map.insert(1, 100);  
  12.     map.insert(2, 200);  
  13.     map.insert(3, 300);  
  14.     map.insert(4, 400);  
  15.     map.insert(5, 500);  
  16.     map.insert(6, 600);  
  17.   
  18.     showmap("orig");  
  19.     //QMap的Key會自動按升序排列  
  20. //刪除  
  21.     it=map.begin()+1;  
  22.     map.erase(it);  
  23.     showmap("delete 2");      
  24. //修改  
  25.     map[5]=1000;  
  26.     showmap("change 5");  
  27. //查詢  
  28.     it = map.find(7);  
  29.     if( it != map.end())  
  30.     {  
  31.         //你可以在這里刪除  
  32.         qDebug() << "find " << it.key() <<"\t" << it.value();  
  33.     }  
  34. //it 刪除安全嗎?  
  35.     for(it=map.begin();it!=map.end();it++)  
  36.     {  
  37.         if((it.key() % 2) ==0) map.erase(it);  
  38.     }  
  39.     showmap("safe erase even key");  
  40.     return 0;  
  41. }  
  42.   
  43. void showmap(QString str)  
  44. {  
  45.     qDebug()<<QString("------ %1 --------").arg(str);  
  46.     QMap<int, int>::iterator it;  
  47.     for( it=map.begin(); it!=map.end(); it++)  
  48.         qDebug() << it.key() <<"\t" << it.value();  
  49. }  

./test2
"------ orig --------" 
1      100 
2      200 
3      300 
4      400 
5      500 
6      600 
"------ delete 2 --------" 
1      100 
3      300 
4      400 
5      500 
6      600 
"------ change 5 --------" 
1      100 
3      300 
4      400 
5      1000 
6      600 
"------ safe erase even key --------" 
1      100 
3      300 
5      1000 



 

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/hejinjing_tom_com/article/details/48103455


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM