C++ STL库中map的常见操作

头文件

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

定义

map<char,int>m;//char是下面中括号中元素的数据类型(当然可以换成其他的),int是等号右边的元素的数据类型。定义什么样的类型是随便的,现在听着可能有点迷,看了下面的赋值可能就懂了
//对m进行赋值
map<char,int>m;
m['a']=4;
m['d']=1;
m['c']=2;

//还是对m进行赋值
map<int,int>m;
m[1]=6;
m[3]=4;
m[2]=8;
//这些数值均没有任何特殊意义,都是随便赋的值

常用函数

 m.push();
 m.pop(); 
 //emmmmmm,上面这两个函数在map里面都没有
 m.clear();     //清空m中的所有元素
 m.empty();     //判断m是否为空
 m.begin();     //返回指向map头部的迭代器
 m.end();       //返回指向map尾部的迭代器
 m.rbegin();    //返回一个指向map尾部的逆向迭代器
 m.rend();      //返回一个指向map头部的逆向迭代器
 m.erase();     //删除指定元素
 m.inser();     //插入元素
 m.find();      //查找指定元素
 m.swap();      //交换两个map中的所有元素(注意:两个map中定义的类型需要完全一致)

几乎使用到上述所有函数的超全代码

提前说明:其实在map内部,已经默认将其中的元素按照中括号中的元素的大小,按照从小到大的顺序排列好了

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

int main()
{
   map<char,int>m1;
   map<char,int>m2;

   m1['q'] = 1;
   m1['w'] = 2;
   m1['e'] = 3;

   m2['a'] = 4;
   m2['s'] = 5;
   m2['d'] = 6;

   cout<<m1.size()<<endl;//运算结果:3
   
   m1.erase(m1.begin());//删除m1中的第一个元素(指的是中括号中所有元素中最小的,即m1['e'] = 3)
   map<char,int>::iterator it;//使用迭代器将map中的元素输出
   for(it=m1.begin();it!=m1.end();it++)
   { 
      cout<<it->first<<' '<<it->second<<endl;//该语句等价于 cout<<(*it).first<<' '<<(*it).second<<endl;
      //这是map的固定输出格式
   }
   //运算结果:q 1
   //         w 2
   
   m1.swap(m2);//交换两个map中的所有元素
   map<char,int>::reverse_iterator rit;
   for(rit=m1.rbegin();rit!=m1.rend();rit++)//逆向输出,可以看成从大到小输出
   {
      cout<<(*rit).first<<' '<<(*rit).second<<endl;
   }
   //运算结果:s 5
   //         d 5
   //         a 4
return 0;
}

下面是整个代码的运算结果:
在这里插入图片描述

发布了15 篇原创文章 · 获赞 17 · 访问量 426

猜你喜欢

转载自blog.csdn.net/qq_46020858/article/details/104149584