Qt 中的 map 与 stl、boost 中稍有差别,这些差别只能让你更加方便的去操作数据,下面代码演示了对 map 的增、删、改、查具体操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <QList>
#include <QString>
#include <QDebug>
#include <QMap>

int main()
{
QMap<QString, int> map;

// 增加数据
map.insert("小明", 4);
map["小王"] = 3;
map.insert("小明", 8); // 会修改原值
qDebug() << map["小明"];

#if 0
// 删除数据
map.remove("小名");
map.clear();
#endif

// 遍历
QList<QString> keyList = map.keys();
for(QList<QString>::iterator it = keyList.begin();
it != keyList.end();
it++)
{
qDebug() << *it << "age is :" << map[*it] << "for list";
}

for(QMap<QString, int>::iterator it = map.begin();
it != map.end();
it++)
{
qDebug() << it.key() << "age is :" << it.value() << "for iterator";
}

// 访问
qDebug() << map.value("小明");
// 如果key不存在,那么这种方式会自动增加并返回一个默认值 0
int i = map["小汤"];
qDebug() << i;

// 查找
if(map.find("小明") == map.end())
{
qDebug() << "not found..";
}
else
{
qDebug() << "found..";
}
}