#include<set>
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
void multiset_test()
{
multiset<int> ms;
ms.insert(10);
ms.insert(20);
ms.insert(10);
ms.insert(20);
ms.insert(30);
ms.insert(50);
//打印出multiset
//multiset会自动排序
for(multiset<int>::iterator it=ms.begin();it!=ms.end();it++)
cout<<*it<<" ";
cout<<endl;
//find
//这样的方法是搜索不出来的
cout<<"查询20的位置在:"<<*ms.find(20)<<endl;
int pos=0;
for(multiset<int>::iterator it=ms.begin();it!=ms.find(20);it++,pos++)
{
}
cout<<"查询20的位置在:"<<pos<<endl;
}
void multimap_test()
{
multimap<string,int> mp;
string name="NEUAI";
mp.insert(make_pair(name,50));
mp.insert(make_pair(name,60));
mp.insert(make_pair(name,70));
mp.insert(make_pair(name,80));
cout<<"**********第一种方法**********"<<endl;
//使用find
multimap<string,int>::iterator mt=mp.find(name);
for(int k=0;k!=mp.count(name);k++,mt++)
cout<<mt->first<<"--"<<mt->second<<endl;
cout<<"**********第二种方法**********"<<endl;
//upper_bound
//multimap<string,int>::iterator mt;
multimap<string,int>::iterator ub=mp.upper_bound(name);
multimap<string,int>::iterator lb=mp.lower_bound(name);
for(mt=lb;mt!=ub;mt++)
cout<<mt->first<<"--"<<mt->second<<endl;
cout<<"**********第三种方法**********"<<endl;
//equal_range
//multimap<string,int>::iterator mt;
ub=mp.equal_range(name).first;
lb=mp.equal_range(name).second;
for(mt=ub;mt!=lb;mt++)
cout<<mt->first<<"--"<<mt->second<<endl;
}
int main()
{
multiset_test();
multimap_test();
}
C++ STL Multiset与Multimap的基本操作
最新推荐文章于 2024-09-11 15:28:58 发布