我们想使用两个set<int>
s' 来创建一些整数间隔。
我们想要做的一些工作是删除我们区间中的区间,但集合是排序的!和interval_first[i] != set1[i]
, interval_last[i] != set2[i]
.
作为一种方式,我们如何仅使用set<int> st1, nd2
and删除一个间隔iterator it1, it2
?
样本输入:
一个 2 5
一个 3 4
d 2 5
p
结果:
1, 2
5, 5
我现在有这段代码,delete 不起作用(因为 set 已排序),请帮我完成这个:
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> st1, nd2;
while(true)
{
char order;
cin >> order;
int a, b;
switch(order)
{
//Add:
case 'a':
cin >> a >> b;
st1.insert(a);
nd2.insert(b);
break;
//Delete:
case 'd':
cin >> a >> b;
if(st1.find(a) != st1.end() && nd2.find(b) != nd2.end())
{
st1.erase(a);
nd2.erase(b);
}
break;
//Print:
case 'p':
{
set<int>::iterator it1, it2;
for(it1 = st1.begin(), it2 = nd2.begin(); it1!=st1.end(); it1++, it2++)
cout << *it1 << ", " << *it2 << endl;
cout << endl;
break;
}
default:
return 0;
}
}
}
注意: nd2 表示第二,st1 表示第一!