map

  • 头文件

#include <map>
using namespace std;


  • 定义

map<string, int> mp;        //不能用char[]    健->值

map<set<int>, int> mp;       

map<set<int>, string>        //map的健和值可以是是STL容器


  • 访问   
(1)下标访问
map中的健是唯一的
map<char, int> mp;
mp['c'] = 20;
mp['c'] = 30;
printf("%d", mp['c']);

输出结果是30

2. 迭代器 :  
map<typename1, typename2>::iterator it;      //vi.begin() and vi.end() is one of iterator

it->firsst //访问健
it->second //访问值

for(map<char, int>::iterator it = mp.begin(); it != mp.end(); it++) {
    printf("%c %d\n", it->first, it->second);
}

而且健的值会从小到大排序


  • Common functions:

(1)  find(key)             //返回键为key的映射迭代器 O(logN)
#include <cstdio>
#include <map>
using namespace std;
int main() {
     map< char , int > mp;
     mp[ 'a' ] = 1;
     mp[ 'b' ] = 2;
     mp[ 'c' ] = 3;
     map< char , int >::iterator it = mp.find( 'b' );
     printf( "%c %d\n" , it->first, it->second);
      return 0;
}

//输出结果
b 2

(2) erase(it)        //删除元素的迭代器
    erase(key)            //删除映射的健
    mp.erase(first, last)    //删除一个区间的所有元素, 即左闭右开的区间[first, last)
#include <cstdio>
#include <map>
using namespace std;
int main() {
     map< char , int > mp;
     mp[ 'a' ] = 1;
     mp[ 'b' ] = 2;
     mp[ 'c' ] = 3;
     map< char , int >::iterator it = mp.find( 'b' );
     mp.erase(it, mp.end());                        //删除it之后的所有映射, 即b 2 和 c 3
      for (map< char , int >::iterator it = mp.begin(); it != mp.end(); ++it)
           printf( "%c %d\n" , it->first, it->second);
      return 0;
}

(3)size()         //map映射的对数

(4)clear()        //清空map中所有元素




  • 主要用途:
(1)需要建立字符(或字符串)与整数之间的映射的题目, 使用map可以减少代码量
(2)判断大整数或者其他类型数据是否存在的题目, 可以把map当bool数组使用
(3)字符串和字符串的映射也有可能会遇到

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值