multiset综合运用

multiset.h头文件

/*
作者:Jennifer
时间:2018年1月31日11:27:23
第一版
  */
#ifndef MULTISET_H_INCLUDED
#define MULTISET_H_INCLUDED
#include <iostream>
#include <set>
#include <string>
#include <stdlib.h>
using namespace std;
multiset<int> s;

void menu()
{
    cout<<"                ******欢迎了解set的用法******            "<<endl;
    cout<<endl;
    cout<<"        1.元素的插入                    2.中序遍历"<<endl;;
    cout<<"        3.反序遍历                    4.元素的删除"<<endl;
    cout<<"        5.元素的检索                    6.退出"<<endl;
}

void shuchu()
{
    multiset<int>::iterator it;
    for(it=s.begin();it!=s.end();it++)
    {
        cout<<*it<<"  ";
    }
    cout<<endl;
}

void insert()
{
    int n,shuju;
    cout<<"请输入想要插入元素的个数:"<<endl;
    cin>>n;
    cout<<"请输入"<<n<<"个整数元素(若为重复元素,重复计数):"<<endl;
    for(int i=0;i<n;i++)
    {
        cin>>shuju;
        s.insert(shuju);
    }
    shuchu();
}

void zhongxu()
{
    shuchu();
}

void fanxu()
{
    multiset<int>::reverse_iterator rit;
    for(rit=s.rbegin();rit!=s.rend();rit++)
    {
        cout<<*rit<<"  ";
    }
    cout<<endl;
}

void shanchu()
{
    int place,i,from,to;
    cout<<"1.输出某个固定位置的元素;    2.全部删除"<<endl;
    cout<<"请输入你想操作的菜单编号:"<<endl;
    cin>>i;
    switch(i)
    {
    case 1:
        {
            cout<<"请输入想要删除元素的位置(第一个元素的位置为1):"<<endl;
            cin>>place;
            s.erase(place);
            shuchu();
            break;
        }
    case 2:
        {
            s.clear();
            shuchu();
            break;
        }
    default:
        {
            cout<<"输入有误!"<<endl;
            break;
        }
    }
}

void index()
{
    multiset<int>::iterator it;
    int i;
    cout<<"请输入想要检索的键值:"<<endl;
    cin>>i;
    it = s.find(i);
    if(it!=s.end())
        cout<<*it<<endl;
    else
        cout<<"没有找到"<<endl;
}

/*void zidingyi()
{

}
*/
void quit()
{
    exit(1);
}


#endif // MULTISET_H_INCLUDED

main.cpp

#include "multiset.h"

int main()
{
    int i;
    while(1)
    {
    menu();
    cout<<"请输入想实现的菜单编号:"<<endl;
    cin>>i;
    switch(i)
    {
    case 1:
        {
            insert();
            break;
        }
    case 2:
        {
            zhongxu();
            break;
        }
    case 3:
        {
            fanxu();
            break;
        }
    case 4:
        {
            shanchu();
            break;
        }
    case 5:
        {
            index();
            break;
        }
    case 6:
        {
            quit();
            break;
        }
    default:
        {
            cout<<"输入有误!"<<endl;
            break;
        }
    }
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值