c 语言中map用法,leetcode中常见的C-map用法

map简介

map是C++中的一种键值对容器,要点就是数据在map中是成对出现的,能够通过键也就是key来快速找到对应的值。

使用map

自己编程时需要在代码前加上下面的头文件来使用map

#include

声明

map my_map; //声明一个map

//map的键值对类型可以是基础数据类型,

//也可以是结构体或类

map迭代器

和vector一样,map也存在迭代器,方便对map进行遍历操作

map::iterator iter = my_map.begin();

map中也存在begin,end,rbegin,rend,前两者为顺序的头尾迭代器,后两者为逆序的头尾迭代器。

插入数据

map中常用的插入数据方式有两种,一种是通过下标插入,一种是通过insert函数插入

my_map[key] = value;

pair::iterator, bool> Insert_Pair

= my_map.insert(pair(1, "one"));

insert函数中的参数除了可以是pair数据以外,还可以是

map::value_type(1, "one")

这样子的格式,但是个人还是比较喜欢直接通过下标插入

这里要注意比较关键的一点是上述两种方式插入的结果可能是不同的。当key在map中已经存在时,通过下标插入会直接覆盖之前的值,而insert则不会插入。

从代码中我们也可以看出insert函数的返回值是一个pair,pair的第一个值是要插入的map的和插入值的key相同的那个迭代器,而第二个值就是插入结果,true则成功插入,false则没有。

还有一点特别要注意的是不要用下标来查找map中是否存在某键值对,这会导致map中插入新的值或者之前的值被覆盖。

判断key是否存在

对于map来说判断key是否存在是一个非常重要的操作

int num = my_map.count(key); //返回值是0或1,表示map中某

//个key出现的次数

map::iterator iter = my_map.find(key);

//返回值是一个迭代器

//如果找到了就是对应的键值对

//如果没找到就是my_map.end()对应的迭代器

删除数据

map中删除数据主要有三种方式,通过迭代器删除某个键值对,通过迭代器删除某些键值对和通过key删除键值对

my_map.erase(iter);

my_map.erase(begin_iter, end_iter);

my_map.erase(key);

在map中使用结构体

这里有一点需要注意就是map中会自动按key升序排序,所以如果使用结构体作为map的key或者value,在插入的时候可能会遇到问题,这时候就需要重载小于操作符

其他常用函数

my_map.size(); //返回map中的键值对个数

my_map.clear(); //清除map中所有键值对

my_map.empty(); //返回map是否为空,返回值为bool

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
map.getOrDefault(Object key, V defaultValue)方法用于从Map获取指定key对应的value,如果Map存在该key,则返回对应的value;如果Map不存在该key,则返回指定的默认值defaultValue。 在代码示例map.getOrDefault()方法被用来获取Map指定key对应的value。如果存在该key,则返回相应的value值;如果不存在该key,则返回指定的默认值。示例,通过传入不同的key进行测试,可以看到当存在对应的key时,返回相应的值;而当不存在对应的key时,返回指定的默认值。 总结来说,map.getOrDefault()方法可以帮助我们在获取Map的value时,避免出现空指针异常,提供了一个默认值的选项,确保我们总能获得一个有效的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Map.getOrDefault()方法](https://blog.csdn.net/u013750244/article/details/108157005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [简单介绍Map的getOrDefault](https://blog.csdn.net/qq_58595750/article/details/126298217)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [leetcode走方格起点到终点-CBCLeetCode:Java刷题&练习GitHub使用](https://download.csdn.net/download/weixin_38671819/19924761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值