【STL】STL之map

map 作为 STL 中一个类似于 HASH 的容器,内部以红黑树实现。
map就是从键(key)到值(value)的映射。

常见操作:

一.构造

map<int,int>hash;

第一个类型为原类型,而第二个类型为映射之后的类型。

二.插入

map<string,int>hash;
hash["hello"]=1;
hash.insert(pair<string,int>("hi",2));
hash.insert(map<string,int>::value_type("april",3));

当然第一种插入方式最简单最常用。

三.查找
1.[]运算符
在stl中已经重载了运算符[]。在一定程度上,map也称为映射数组。

map<int,int>hash;
int pos=hash[1];
if(pos==0)//没有找到 即不存在键为1的元素
    puts("-1");
else printf("%d\n",pos);//找到了则返回元素位置

2.count()函数与find()函数

map<string,int>name;
int main()
{
    name["Mike"]=1 ,name["Sam"]=2 ,name["Eva"]=3;
    if(name.find("Mike")!=name.end())
        puts("Find");
    if(name.count("Eva"))
        puts("Find");
    return 0;
}

在这个例子中发现find()可以查找到元素的位置,而count()只能返回元素的个数。

四.删除
1.clear()
clear()只能清空整个map,多用于多组测试数据的代码。O__O”…

2.erase()

map<string,int>name;
int main()
{
    name["Mike"]=1 ,name["Sam"]=2 ,name["Eva"]=3;
    name.erase("Mike");//通过key来删除元素
    name.erase(name.find("Sam"));//通过一个条目对象来删除元素
    name.erase(name.begin(),name.end());//删除某一个范围的元素
    return 0;
}

其中,clear()=name.erase(name.begin(),name.end())

五.遍历
这就需要使用迭代器了。

map<string,int>name;
for(map<string,int>::iterator p=name.begin();p!=name.end();++p)
    cout<<p->frist<<' '<<p->second<<endl ;

其中,p->frist为键即第一个类型,p->second为值即第二个类型。

六.常用函数
begin() 返回map的初始地址
end() 返回map的结束地址
count(a) 返回元素a的个数
find(a) 返回元素a的地址
empty() 判断map是否为空 若为空返回true
size() 返回map的元素个数
swap() 交换两个map 注:不能交换map中两个元素的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值