1,multimap与map大致相同。
(1),insert不同;
(2),允许有相同关键字的,输出按顺序输出。
2,find()相同的返回指向第一个迭代器。
3,erase()删除相同的所有。
#include <iostream>
using namespace std;
#include <map>
#include <iterator>
#include <cstdio>
int main()
{
/*
multimap<string,int> maps1; //定义
multimap<int,string> maps2;
multimap<char,int> maps3;
multimap<int,char> maps4;
multimap<string,char> maps5;
multimap<char,string> maps6;
multimap<int,int> maps7;
multimap<char,char> maps9;
multimap<string,string> maps0;
multimap<int,float> maps10;
multimap<int,double> maps11;
multimap<char,float> maps12;
multimap<char,double> maps13;
multimap<string,float> maps14;
multimap<string,double> maps15;
multimap<float,int> maps16;
multimap<float,char> maps17;
multimap<float,string> maps18;
multimap<float,double> maps19;
multimap<float,float> maps20;
multimap<double,int> maps21;
multimap<double,char> maps22;
multimap<double,string> maps23;
multimap<double,float> maps24;
multimap<double,double> maps25;*/
/* multimap<int,char> maps; //插入
maps.insert(make_pair<int,char>(5,'q'));
maps.insert(make_pair(2,'k'));
maps.insert(make_pair(4,'g'));
maps.insert(make_pair(2,'u'));
maps.insert(make_pair(1,'a'));*/
//multimap<int,char>::iterator l_it;
//for(l_it=maps.begin();l_it!=maps.end();++l_it) //顺序输出
//{
// printf("%d %c\n",l_it->first,l_it->second);
//}
//multimap<int,char>::reverse_iterator l_it;
//for(l_it=maps.rbegin();l_it!=maps.rend();++l_it) //倒序输出
//{
// printf("%d %c\n",l_it->first,l_it->second);
//}
/*
cout<<maps.size()<<endl; //size();
if(maps.empty()) //empty();
printf("空\n");
else
printf("不空\n");
maps.clear(); //clear();
cout<<maps.size()<<endl;
if(maps.empty())
printf("空\n");
else
printf("不空\n");*/
//cout<<maps.count(3)<<endl; //count();
/*
map<int,char>::iterator l_it;
l_it=maps.find(2); //find();查关键字
if(l_it==maps.end())
printf("没找到\n");
else
printf("%d %c\n",l_it->first,l_it->second);
maps.erase(2); //erase();删完为2的关键字
l_it=maps.find(2);
if(l_it==maps.end())
printf("没找到\n");
else
printf("%d %c\n",l_it->first,l_it->second);
for(l_it=maps.begin();l_it!=maps.end();++l_it) //顺序输出
{
printf("%d %c\n",l_it->first,l_it->second);
}*/
//cout<<maps.max_size()<<endl; //max_size();
/*
map<int,char>::iterator l_it; //lower_bound();
l_it=maps.lower_bound(2);
printf("%d %c\n",l_it->first,l_it->second);
l_it=maps.upper_bound(2); //upper_bound();
printf("%d %c\n",l_it->first,l_it->second);*/
multimap<int,char> maps,mapq; //插入
maps.insert(make_pair<int,char>(5,'q'));
maps.insert(make_pair(2,'k'));
maps.insert(make_pair(4,'g'));
maps.insert(make_pair(2,'u'));
maps.insert(make_pair(1,'a'));
mapq.insert(make_pair(12,'i'));
mapq.insert(make_pair(43,'l'));
multimap<int,char>::iterator l_it;
for(l_it=maps.begin();l_it!=maps.end();++l_it) //顺序输出
{
printf("%d %c\n",l_it->first,l_it->second);
}
printf("------------------------------------------\n");
maps.swap(mapq); //swap();
for(l_it=maps.begin();l_it!=maps.end();++l_it) //顺序输出
{
printf("%d %c\n",l_it->first,l_it->second);
}
return 0;
}
4,
C++ MultiMaps
C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。
begin() | 返回指向第一个元素的迭代器 |
clear() | 删除所有元素 |
count() | 返回一个元素出现的次数 |
empty() | 如果multimap为空则返回真 |
end() | 返回一个指向multimap末尾的迭代器 |
equal_range() | 返回指向元素的key为指定值的迭代器对 |
erase() | 删除元素 |
find() | 查找元素 |
get_allocator() | 返回multimap的配置器 |
insert() | 插入元素 |
key_comp() | 返回比较key的函数 |
lower_bound() | 返回键值>=给定元素的第一个位置 |
max_size() | 返回可以容纳的最大元素个数 |
rbegin() | 返回一个指向mulitmap尾部的逆向迭代器 |
rend() | 返回一个指向multimap头部的逆向迭代器 |
size() | 返回multimap中元素的个数 |
swap() | 交换两个multimaps |
upper_bound() | 返回键值>给定元素的第一个位置 |
value_comp() | 返回比较元素value的函数 |