multiset是容器中的一种,与set相比,可以插入相同的元素。其他地方和set几乎一模一样,可以看看set,见下面链接。
代码如下:
#include
#include
using namespace std;
multiset<int> s;
multiset<int>::iterator it;
multiset<int>::reverse_iterator rit;
void menu()
{
cout<<"1.插入 2.查找"<cout<<"3.删除 4.显示"<cout<<"5.退出"<void Add()
{
int i;int n;int N;
cout<<"请输入你要输入的整数个数:"<cin>>N;
cout<<"请输入"<"个整数:"<for(i=0;icin>>n;
s.insert(n);
}
}
void Find()
{
int n;
cout<<"请输入要查找的数:"<cin>>n;
it=s.find(n);
if(it!=s.end())
cout<<*it<else
cout<<"没找到!"<void Delete()
{
int i;int place;int val;
cout<<"*******1.删除某位置元素 2.删除某个值的元素*******"<cout<<"*******3.清空所有元素 *******"<cin>>i;
switch(i)
{
case 1:{
cout<<"请输入要删除第几个元素(首元素为0):"<cin>>place;
it=s.begin(); //迭代器指向开头第一个
while(place){
it++;
place--;
}//找位置
int ss=*it;//把值给个暂时的变量,其实和删除确定值一样,只不过找到位置而已
s.erase(ss); //删除该元素
}break;
case 2:{
cout<<"请输入该值:"<cin>>val;
s.erase(val);
}break;
case 3:s.clear();break;
default:cout<<"输入错误!"<void Display()
{
int i;
cout<<"*******1.升序输出 2.降序输出*******"<cin>>i;
switch(i)
{
case 1:
{
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<" ";
}
cout<break;
case 2:
{
for(rit=s.rbegin();rit!=s.rend();rit++)
{
cout<<*rit<<" ";
}
cout<break;
}
}
int main()
{
int i;
while(1)
{
menu();
cout<<"请输入菜单号:"<cin>>i;
if(i==5)break;
switch(i)
{
case 1:Add();break;
case 2:Find();break;
case 3:Delete();break;
case 4:Display();break;
default:cout<<"输入错误!";break;
}
}
return 0;
}