以下代码用了set的erase,运行时提示set/map iterator not incrementable.这是为什么呢?
#include<iostream>#include<algorithm>#include<string>#include<set>#include<map>#include<cstdio>using namespace std;int a[600000];set<int> see;set<int>::iterator it;
int main( ){ int n; int shur; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; see.insert(a[i]); } sort(a,a+n); int ds,erasum=0; for(int i=n-1;i>=0;i--) { ds=a[i]*2; if(see.lower_bound(ds)!=see.end()) { it=see.find(a[i]); see.erase(it++); it=see.lower_bound(ds); see.erase(it++); erasum++; } } int sum=see.size()+erasum; cout<<sum<<endl; return 0;}
以下为代码#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
int a[600000];
set<int> see;
set<int>::iterator it;
int main( ){
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
see.insert(a[i]);
}
sort(a,a+n);
int ds,erasum=0;
for(int i=n-1;i>=0;i--)
{ ds=a[i]*2;
if(see.lower_bound(ds)!=see.end())
{
it=see.find(a[i]);
see.erase(it++);
it=see.lower_bound(ds);
see.erase(it++);
erasum++;
}
}
int sum=see.size()+erasum;
cout<<sum<<endl;
return 0;
}
白猪掌柜的
一只甜甜圈
相关分类