map 是一种数据容器, 它提供一种由 key 到 value 的映射.
map 的 key 是唯一的, 也是有序的. map 通常由近似平衡的红黑树来实现.
key 的有序性, 使得插入, 查找节点比较有效. map 的操作(增删改查), 通常就是
对节点的操作 (增删改查). 当然, map 也有创建(new) 和销毁 (delete) 操作.
QMap 是 Qt 实现的一种 map, 与 c++ stl map 使用方法一致.
QMap 的增删改查,
程序简单, 就直接上代码了, 附上运行结果.
- [cpp] view plain https://blog.csdn.net/hejinjing_tom_com/article/details/48103455# copy https://blog.csdn.net/hejinjing_tom_com/article/details/48103455#
- #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
来源: http://www.bubuko.com/infodetail-2570649.html