1

我们想使用两个set<int>s' 来创建一些整数间隔。

我们想要做的一些工作是删除我们区间中的区间,但集合是排序的!和interval_first[i] != set1[i], interval_last[i] != set2[i].

作为一种方式,我们如何仅使用set<int> st1, nd2and删除一个间隔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 表示第一!

4

0 回答 0