map的使用

C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值

一,初始化

//头文件

#include<map>

map<int, string> ID_Name;

或map<int, string> ID_Name = { { 2015, "Jim" }, { 2016, "Tom" }, { 2017, "Bob" } };

二,插入

1.使用[ ]进行单个插入:

ID_Name[2015] = "Tom";// 如果已经存在键值2015,则会作赋值修改操作,如果没有则插入,Tom是关键字对应值value;

2.insert:

ID_Name.insert({2,“TTT”}); //只有key=2处无value时才能插;

三,取值

Map中元素取值主要有at和[ ]两种操作,at会作下标检查,而[]不会,即若没有关键字2016,使用[]取值会导致插入,语句不会报错,但打印结果为空。

cout<<ID_Name[2016]<<endl;

或ID_Name.at(2016) = "Bob";

四, 删除

1.// 根据Key来进行删除, 返回删除的元素数量,在map里结果非0即1

ID_Name.erase( const key_type& key );如cout<<maps.erase(0);

2.// 删除迭代器指向位置的键值对,并返回一个指向下一元素的迭代器

iterator erase( iterator pos )

3.// 清空map,清空后的size为0

void clear();

五,查找

// 关键字查询,找到则返回指向该关键字的迭代器,否则返回指向end的迭代器

iterator find (const key_type& k);

map<string,int> maps;
maps.insert({"sec",44});
maps.insert({"sef",1});
cout<<maps.find("sec")->second; //查找到key=sec后返回对应的value值,->second
-----------------
maps.find(s[i])==maps.end() //用这个判断能否找到,为true表示没找到

注意:

map常常用来解决“第一个不重复”问题!

思路:先扫描一遍,再扫描一遍!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值