STL之multiset应用。

本文介绍了一种使用C++标准库中的multiset来实现动态数据结构的方法,该结构支持添加元素、删除最大和最小元素及查询当前最大最小元素的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:可添加数,可删除最大、最小的数,可查询当前最大、最小的数。

思路:multiset里可以有重复的数,但删除的时候,会把相同的数一并删除,只需将多删的数再加进去即可。

#include<iostream> #include<cstring> #include<cstdio> #include<set> using namespace std; int main() { int a,b;int c,d; int i=0; char ch[4]; scanf("%d%d",&a,&b); getchar(); multiset <int> tree; tree.clear (); multiset<int >::iterator it,pre; tree.insert (b); while(i<a) { scanf("%s",ch); if(!strcmp(ch,"A")) { scanf("%d",&c); getchar(); tree.insert(c); } else if(!strcmp(ch,"DI")) { int temp=*(tree.begin()); int m=tree.count (temp); tree.erase (temp); for(int j=1;j<m;j++) tree.insert (temp); } else if(!strcmp(ch,"DA")) { int temp=*(--tree.end ()); int m=tree.count (temp); tree.erase(temp); for(int j=1;j<m;j++) tree.insert (temp); } else if(!strcmp(ch,"Q")) { printf("%d %d\n",*(tree.begin ()),*(--tree.end ())); } i++; } return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值