算法笔记-STL-map

map
映射
map 可以将任何基本类型(包括STL容器) 映射到任何基本类型(包括STL容器)

定义

map<typename1, typename2> mp;

map和其它STL容器定义上有点不一样,map需要确定映射前类型(键key)和映射后类型(值value)
如果是字符串到整型的映射,必须使用string而不能用char数组 char数组作为数组,是不能被作为键值的

map<string, int> mp;

map的键和值也可以是STL容器,如map<set, string> mp;

map容器内元素的访问

  1. 通过下标访问
    和访问普通的数组一样,如map<char, int> mp的map来说,可以直接使用mp[‘c’]的方式来访问它对应的整数
    需要注意 map中的键是唯一的 后来的会覆盖前面的赋值
  2. 通过迭代器访问
  map<typename1, typename2>::iterator it;

map可以使用 it->first来访问键 it->second来访问值
map内部是使用红黑树实现的(set也是),在建立映射的过程中会自动实现从小到大的排序功能

###map常用函数解析

  1. find() find(key)返回键为key的映射的迭代器
//eg. 	
//...
//a 1, b 2, c 3 	
map<char, int>::iterator it = mp.find('b');  
printf("%c %d\n", it->first, it->second); //b 2 
  1. erase()
    2.1 删除单个元素
    mp.erase(it), it为需要删除的迭代器
    mp.erase(key),key为欲删除的映射的键
    2.2 删除一个区间内的所有元素 //mp.erase(first, last) 删除左闭右开[first, last)
  2. size()获得map中映射的对数
  3. clear() 用来清空map中的所有元素

map 常见用途

  1. 需要建立字符(或字符串)与整数之间映射的题目,使用map可以减少代码量
  2. 判断大整数或者其他类型数据是否存在的题目,可以把map当bool数组用
  3. 字符串和字符串的映射可能遇到
    如果一个键需要对应多个值,就只能用multimap
    unordered_map 以散列代替map内部的红黑树实现,处理无排序功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值