Map
Map的特点是增加和删除节点对迭代器的影响很小。对于迭代器来说,可以修改实值,而不能修改key
map<T1,T2> m; //T1是key值,T2是value值,初始的时候 m 是空映射
插入方式:键值对的形式插入
- 采用创建pair的形式插入
- 采用make_pair的形式进行插入
- 采用大括号的形式进行插入
map<string, int> dict; // {}
dict.insert(pair<string, int>("Tom", 1)); // 插入键值对的形式
dict.insert(pair<string, int>("Jone", 2));
dict.insert(pair<string, string>("string", "字符串"));
dict.insert(make_pair("apple", "苹果"));//模板函数make_pair,实际调的是pair
dict.insert({ "left", "左边" });
dict.insert({ "left", "剩余" });//插入不进去了,因为key值已经有了
访问查找
访问的时候直接通过[]就可以完成
dict[key]; //得到的是key的值
dict['test']=1; //如果key的值,之前没有定义,那么这里讲插入一个新的key值,并赋值一个默认的参数
dict['test']=3 //当然也可以通过这种方式修改key对应的value值
count()函数和find()函数
count函数,返回的是被查找元素的个数。如果有,返回1;否则,返回0。主要用于查找map中是否存在这样的key值
find函数,返回的是被查找元素的位置,没有则返回map.end()
遍历
for (map<string, int>::iterator it = dict.begin(); it != dict.end(); ++it) {
cout <<"key is "<< it->first <<" value is " << it->second << endl;
}
方法总结
插入:
insert(三种方式);
//直接通过:对象[key]=val;的方式修改
count(key); //因为map中不存在相同的key值,所以结果只能是0,1
find(key); //通过迭代器的方式,查找key的位置,返回也是一个迭代器,如果找不到就是end()
erase(key); //删除关键字值
size(); //获取映射对数
clear();