> 文章列表 > STL容器(set) 2023/4/21

STL容器(set) 2023/4/21

STL容器(set) 2023/4/21

set容器

s.empty(); 判断是否为空,是返回1,否则返回0

s.size();返回当前集合的元素个数

s.clear();清空当前集合

s.begin(),s.end();返回集合的首尾迭代器(可理解为数组的下标)

s.insert(k);向集合中插入元素k

s.erase(k);删除k

s.find();返回指向元素k的迭代器,如果不存在就返回s.end(),这个性质可以用来判断集合中有没有这个元素

不重复数字

题目描述

给定 n 个数,要求把其中重复的去掉,只保留第一次出现的数。

输入格式

本题有多组数据

第一行一个整数 T,表示数据组数。

对于每组数据:

第一行一个整数 n。

第二行 n 个数,表示给定的数。

输出格式

对于每组数据,输出一行,为去重后剩下的数,两个数之间用一个空格隔开。

输入

2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6

输出

1 2 18 3 19 6 5 4
1 2 3 4 5 6
#include <iostream>
#include <vector>
#include <set>
#define int long long
using namespace std;
signed main()
{int t;cin >> t;while(t --){vector<int> a;set<int> s;int n,k=0;cin >> n;for(int i = 0;i < n;i ++){int x;cin >> x;if(s.find(x)!=s.end()) continue;a.push_back(x);s.insert(x);k++;}for(int i = 0;i < k;i ++){printf("%lld ",a[i]);}printf("\\n");}return 0;
}