C++STL容器----map与multimap容器

一、定义

Map是STL [1]  的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道

《百度百科》

简单来说,对于数组来说,索引就相当于键值,s[i]就相当于映照的数据.map中不允许重复的键值,multimap允许重复的键值

二、用法

由于map容器也是使用红黑树存取,所以它的用法与set一样在这里就直接写出代码

三、map代码实现

#include<map>
#include<string>
#include<iostream>
using namespace std;
int main(int  argc,char *argv[])
 {
  map<int,char >m;//定义map容器,其中键值为int型,映照的数据为char 型
  m[25]='m';
  m[28]='k';
  m[30]='a';
    m.erase(28);//删除键值为28的元素
   map<int,char>::iterator it;//定义迭代器
   for(it=m.begin();it!=m.end();it++)
   {
     cout<<(*it).first<<" :"<<(*it).second<<endl;//读取键值和映照的数据
   }
   map<int,char>::reverse rit;
   for(rit=m.rbegin();rit!=m.rend();rit++)
   {
    cout<<(*rit).first<<" :"<<(*rit).second<<endl;
   }
}

实现结果

                           multimap

由于multimap可以插入重复的键值,所以插入,删除,查找都与map的用法不相同

四、multimap代码实现

 一、实现重复插入

#include<iostream>
#pragma warning(disable:4786)
#include<map>
#include<string>
using namespace std;
int main(int argc,char *argv[])
{   multimap<string,double> m;
   m.insert(pair<string,double>("jack",300.5));
   //向multimap插入数据
   m.insert(pair<string,double>("kity",200));
   m.insert(pair<string,double>("Memi",500));
   m.insert(pair<string,double>("jack",300.5));//插入重复的数据
    multimap<string,double>::iterator it;
    for(it=m.begin();it!=m.end();it++)
    {
      cout<<(*it).first<<" :"<<(*it).second<<endl;
    }
    m.erase("jack");
    cout<<"the elements after deleted :"<<endl;
 for(it=m.begin();it!=m.end();it++)
 {
       cout<<(*it).first<<" :"<<(*it).second<<endl;
 }
}

实现结果:

二、实现删除

#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(int argc,char *argv[])
{
  multimap<string,double>m;
  //插入相关的数据
  m.insert(pair<string,double>("jack",300.5) );
  m.insert(pair<string,double>("Tom",200));
  m.insert(pair<string,double>("jack",100.5) );
  m.insert(pair<string,double>("Memi",500));
  multimap<string,double>::iterator it;
  for(it=m.begin();it!=m.end();it++)
  {
    cout<<(*it).first<<" :"<<(*it).second<<endl;
  }
 cout<<"查找的结果"<<endl;
 it=m.find("jack");
   if(it!=m.end())
   {
       cout<<(*it).first<<" :"<<(*it).second<<endl;
   }
    else
    {
       cout<<"抱歉没找到"<<endl;
    }
    it=m.find("asda");
    if(it!=m.end())
    {
        cout<<(*it).first<<" :"<<(*it).second<<endl;
    }
    else
    {
     cout<<"抱歉没找到"<<endl;
    }
   return 0;






}

实现结果: 

猜你喜欢

转载自blog.csdn.net/qq_38345598/article/details/86250774