map 是一種數據容器,它提供一種由key 到 value 的映射。
map 的key 是唯一的, 也是有序的。map 通常由近似平衡的紅黑樹來實現。
key 的有序性,使得插入,查找節點比較有效。map 的操作(增刪改查),通常就是
對節點的操作(增刪改查)。當然,map 也有創建(new)和銷毀(delete)操作。
QMap 是Qt 實現的一種map, 與c++ stl map 使用方法一致。
QMap 的增刪改查,
程序簡單,就直接上代碼了,附上運行結果。
- #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() <<"\t" << 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() <<"\t" << 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