【C++】STL之map的使用

1、简介

map存储的是键值对[key: value],提供一对一的存储
关键字(key)在map中只能出现一次
值(value):每个key都有一个对应的值

map会自动建立key-value的对应,并且会根据key值自动排序(升序)

2、map的声明

//你可以根据需要设置map中key和value的数据类型
map<int,int> m;

3、map的插入

注意前两种方法,当key存在时不能插入数据,但是数组方式在key值存在时依然能插入(覆盖原来的value值)


//1、pair类型插入
m.insert(pair<int,int>(1,0));
//2、value_type插入
m.insert(map<int,int>::value_type(2,0));
//3、数组方式插入
m[3]=0;//map是可以通过key值作为下标新建或者访问的

4、map的遍历

//使用迭代器遍历
for(map<int,int>::iterator::iter=m.begin();iter!=m.end();iter++)
{
	cout<<iter->first<<" "<<iter->second<<endl;
}

//for遍历
for(auto &ch: m)
{
	cout<<ch->first<<" "<<ch->second<<endl;
}

5、map的查找元素、判断是否存在

//find函数如果查找成功返回该键值对地址,失败则返回m.end()
map<int,int>::iterator iter=m.find(2);
if(iter!=m.end())
	cout<<iter->second;
else
	cout<<"No";
//判断元素是否存在
//1、find函数
map<int,int>::iterator iter=m.find(2);
if(iter!=m.end())
	cout<<"Yes";
else
	cout<<"No";
//2、count函数,包含该元素时返回1,否则为0
if(count(m.begin(),m.end(),2)
	cout<<"Yes";
else
	cout<<"No";

6、常用成员函数

m.begin();//返回一个迭代器,指向字符串的第一个元素
m.end();//返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置
m.rebegin();//返回一个逆向迭代器,指向字符串的最后一个字符
m.rend();//返回一个逆向迭代器,指向字符串的开头(第一个字符的前一个位置)
m.size();//返回map大小
m.erase(iter);//删除一个元素
m.empty();//判空

7、map按value值排序

typedef pair<int,int> PAIR;
//比较器
//按value值进行降序排序,value值相等key小的在前
bool cmp_value(const PAIR& lhs,const PAIR& rhs)
{
	if(lhs.second == rhs.second)
	{
		return lhs.key<rhs,second;
	}
	return lhs.second > rhs.second;
}
sort(m.begin(),m,end(),cmp_value);
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值