#inclue<map>

#include
map
mapmap是一棵红黑树,它作为一个容器储存的是一个键值对另一个关键码的映射。必须要定义键值类型的小于号。

声明方法是:map<a,b> name;其中aa和bb是数据类型,namename是这棵红黑树的名字。

一般mapmap都可以当做hashhash表来用,但是因为mapmap内部是靠平衡树维护的,所以复杂度是O(log)O(log)的,比一般的手写hashhash要慢。但是mapmap还支持中括号操作,所以一般情况下十分方便写。

声明方式

map<char,int> s;
map<char,int>::iterator it;

假设类型aa是charchar,类型bb是intint,那么定义一个mapmap和这个mapmap的迭代器就是这样写。迭代器只支持访问连续地址,所以就只能++it++it和−−it−−it。如果我用这个mapmap来统计每个字符出现的次数,那么就可以直接写s[ch]++;

name.size()​
返回元素个数。

name.empty()​
判断mapmap是否为空,为空则是逻辑真,否则就是逻辑假。

name.clear()​
清空mapmap。

name.begin()/name.end()​
返回mapmap的首迭代器和尾迭代器。左闭右开,所以尾迭代器为空。

对迭代器解除引用后会得到一个pairpair。

name.insert(pair<a,b>)/name.erase(pair<a,b>或迭代器或迭代器)​
插入一个pairpair类型,删除一个pairpair或者是迭代器。

name.find(x)​
返回一个迭代器,存的是一个第一关键字为xx的二元组。若不存在,则返回name.end()name.end()。

[]操作符
s[x]可以直接访问第一关键字与x相等的二元组的第二关键字。但是如果不存在mapmap就会先新建一个二元组,使得这个新建的二元组第一关键字为x,第二关键字为00。所以在使用[]操作符之前最好先findfind一下以x为第一关键字的二元组是否存在,不然用多了就会出现大量的无用二元组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值