记录一下map的用法(简单易懂)

#include<iostream>
#include<map>
using namespace std;

int main()
{
    //初始化,数据类型均为整形
    map<int,int> mp1; //此时定义了一个空的哈希表,里面啥都没有
    map<int,int> mp2={{1,3},{4,3}}; //此时定义了一个带有两个键值对的哈希表
    
    //注意:map储存的键对值在容器中是按照key自动升序排列的
    
    //map的成员函数
    
    /*小知识点:可以看到,当操作对象为 map 容器中已存储的键值对时,则借助 [ ] 运算符,
    既可以获取指定键对应的值,还能对指定键对应的值进行修改;反之,若 map 容器内部没有
    存储以 [ ] 运算符内指定数据为键的键值对,则使用 [ ] 运算符会向当前 map 容器中添加
    一个新的键值对。*/
    
    
    //首先初始化一个map
    map<int,int> mp;
    mp[1]=1; mp[2]=2; //存入两个键值对
    
    mp.begin(); //这是指向mp头部的迭代器
    cout<<mp.begin()->first<<endl; //first为key,second为val,所以这个输出为1
    
    mp.end(); //这是指向mp尾部后面的迭代器,与之前的几个end是一样的
    
    mp.insert(pair<int,int>(3,3)); //将数值插入map中,如果已经存在相应的key,那么该函数无效
    
    mp.size(); //这就是mp里面键值对的个数
    cout<<mp.size()<<endl;  //就是2;
    
    mp.clear(); //从单词clear可以看见,这是一个清理函数,也就是将mp里面的所有数据清除
    
    mp[1]=1; mp[2]=2;
    mp.count(1); //如果map中存在1这个key,那么count()返回值为1,否则为0
    
    mp.find(1);  //查找函数,如果map中存在1这个key,那么find函数会返回指向这个key的迭代器,否则返回end()
    
    mp.erase(1); 
    /*删除函数
        1.当参数为key的时候,会删除相应的键对值,如果map中有这个key则返回1,否则返回0;
        2.当参数为指向某一个键对值的迭代器的时候,那么就会删除指向的键对值,一般与find函数配合使用;
        3.当参数为两个迭代器的时候,比如mp.erase(it1,it2),那么就会删除两个迭代器范围内的所有键对值,包括it1指向的但不包括it2指向的
    */
    
    
    //map的遍历,由于map存储的为键对值,有两个数据,所以遍历方式有小小的不同
    
    map<int,int> mp3 { {2,4} , {1,3} };
    //第一种
    for(auto x : mp3) cout<<x.first<<' '<<x.second<<endl;  //此时x表示的是一个键对值,所以用first表示key,second表示val
    
    //第二种
    for(auto [a,b] : mp3) cout<<a<<' '<<b<<endl; //此时直接用[x,y]将一个键对值表示出来
    
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值