multimap容器
1、multimap和map基本相同,但是multimap允许插入重复键值的元素,由于允许重复键值的存在,所以multimap的插入删除查找与map不同。
2、元素插入可以进行键值相同的元素的插入
3、删除操作则可以删除某迭代器位置上的元素,某迭代器区间的元素和某键值的所有重复元素,可以clear()清空multimap
4、查找find(),找到则返回找到的第一个元素的迭代器位置,否则返回m.end()迭代器位置
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
multimap<string,double> m;
//插入操作
m.insert(make_pair("jack",307.5));
m.insert(pair<string,double>("kity",200));
m.insert(pair<string,double>("memi",500));
//插入相同元素
m.insert(pair<string,double>("jack",306));
multimap<string,double>::iterator it;
for(it=m.begin();it!=m.end();it++)
{
cout<<(*it).first<<":"<<(*it).second<<endl;
}
it=m.find("jack");
if(it!=m.end())
{
cout<<"找到了:"<<(*it).first<<":"<<(*it).second<<endl;
cout<<"当前元素个数是:"<<m.size()<<endl<<endl;
}
else
{
cout<<"没找到jack!"<<endl;
cout<<"当前元素个数是:"<<m.size()<<endl<<endl;
}
//删除键为jack的元素
m.erase("jack");
cout<<"After deleting"<<endl;
for(it=m.begin();it!=m.end();it++)
{
cout<<(*it).first<<":"<<(*it).second<<endl;
}
it=m.find("Jack");
if(it!=m.end()) {cout<<(*it).first<<":"<<(*it).second<<endl; }
else cout<<"没找到jack!"<<endl;
cout<<"当前元素个数是:"<<m.size()<<endl;
system("pause");
return 0;
}
用法二:查找所有的同键值
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(void)
{
multimap<string,string,less<string> > mulmap;
multimap<string,string,less<string> >::iterator p; //初始化多重映射mulmap:
typedef multimap<string,string,less<string> >::value_type vt;
typedef string s;
mulmap.insert(vt(s("Tom "),s("is a student")));
mulmap.insert(vt(s("Tom "),s("is a boy")));
mulmap.insert(vt(s("Tom "),s("is a bad boy of blue!")));
mulmap.insert(vt(s("Jerry "),s("is a student")));
mulmap.insert(vt(s("Jerry "),s("is a beatutiful girl")));
mulmap.insert(vt(s("DJ "),s("is a student")));
//输出初始化以后的多重映射mulmap:
for(p=mulmap.begin();p!=mulmap.end();++p)
cout<<(*p).first<<(*p).second<<endl; //检索并输出Jerry键所对应的所有的值
cout<<"find Jerry :"<<endl;
p=mulmap.find(s("Jerry "));
while((*p).first=="Jerry ")
{
cout<<(*p).first<<(*p).second<<endl;
++p;
}
cin.get();
return 0;
}