#P0165. set & 有序集合

    传统题 1000ms 256MiB 显示标签>语言基础栈、队列和 STL

set & 有序集合

题目描述

set<int>sset<int> s

常用函数

s.insert(value)value 添加到集合。

s.erase(value)value 从集合中删除。

s.count(x) 判断 x 是否在集合中,如果存在返回 11,否则返回 00

s.clear() 清空集合。

注意: 包含 #include <set>

注意: 集合中不会存在重复元素。

注意: 插入到集合中的元素会自动升序。

注意: set 基于红黑树实现,遍历比较特殊,不支持 [ ] 访问。可以用迭代器访问。

for(set<int>::iterator it = s.begin(); it != s.end(); ++ it) cout << *it << ' ';

#include <iostream>
#include <set>
using namespace std;
int main()
{
    int n;
    set<int> s;
    cin >> n;
    for(int i = 1; i <= n; ++ i)
    {
    	int op, t;
    	cin >> op;
    	if(op == 1)
    	{
    		cin >> t;
    		s.insert(t);
		}
		else if(op == 2)
		{
            cin >> t;
			s.erase(t);
		}
		else
		{
			cin >> t;
			if(s.count(t)) cout << "Yes" << endl;
			else cout << "No" << endl;
		}
	}
    return 0;
}

输入格式

11 行,为一个正整数 nn

接下来 nn 行,每行一个正整数 opop

opop11 则接着输入一个整数 tt, 并将其 s.insert(t)s.insert(t)tt 添加到集合。

opop22 则接着输入一个整数 tt, 并将其 s.erase(t)s.erase(t)tt 从集合删除。

opop33,则接着输入一个整数 tt, 若集合中存在 tt,则输出 Yes,否则输出 No

数据保证 opop22 时集合不为空。

输出格式

共一行,对于每个 33 操作,输出相应的答案。

数据范围

1n104.1 ≤ n ≤ 10^4.

1t103.1 ≤ t ≤ 10^3.

输入样例:

5
1 1
1 2
1 3
2 2
3 2

输出样例:

No

相关

在下列比赛中:

常用 STL & (最后一舞)