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的函數 |