map 是一种数据容器,它提供一种由key 到 value 的映射。
map 的key 是唯一的, 也是有序的。map 通常由近似平衡的红黑树来实现。
key 的有序性,使得插入,查找节点比较有效。map 的操作(增删改查),通常就是
对节点的操作(增删改查)。当然,map 也有创建(new)和销毁(delete)操作。

QMap 是Qt 实现的一种map, 与c++ stl map 使用方法一致。

QMap 的增删改查

程序简单,就直接上代码了,附上运行结果。

[cpp] view plain copy
 

#include <QDebug>  
  
void showmap(QString str);  
QMap<int, int> map;  
int main(int argc, char *argv[])  
{  
    (void) argc;  
    (void)argv;  
    QMap<int, int>::iterator it;  
//增加  
    map.insert(1, 100);  
    map.insert(2, 200);  
    map.insert(3, 300);  
    map.insert(4, 400);  
    map.insert(5, 500);  
    map.insert(6, 600);  
  
    showmap(“orig”);  
    //QMap的Key会自动按升序排列  
//删除  
    it=map.begin()+1;  
    map.erase(it);  
    showmap(“delete 2”);      
//修改  
    map[5]=1000;  
    showmap(“change 5”);  
//查询  
    it = map.find(7);  
    if( it != map.end())  
    {  
        //你可以在这里删除  
        qDebug() << “find ” << it.key() <<” ” << it.value();  
    }  
//it 删除安全吗?  
    for(it=map.begin();it!=map.end();it++)  
    {  
        if((it.key() % 2) ==0) map.erase(it);  
    }  
    showmap(“safe erase even key”);  
    return 0;  
}  
  
void showmap(QString str)  
{  
    qDebug()<<QString(“—— %1 ——–“).arg(str);  
    QMap<int, int>::iterator it;  
    for( it=map.begin(); it!=map.end(); it++)  
        qDebug() << it.key() <<” ” << it.value();  
}  

./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