#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;
}
记录一下map的用法(简单易懂)
最新推荐文章于 2024-07-25 10:17:46 发布