#include<bits/stdc++.h>
#include <unordered_set>//<unordered_set> 用于使用无序集合数据结构。
using namespace std;
int main()
{
int n;
cin>>n;
while(n)
{
int m;
cin>>m;
set<int>s;
s.clear();//创建一个整数类型的 set 容器 s ,并通过 clear 方法清空它。
for(int i=0;i<m;i++)
{
int num;
cin>>num;
if (s.find(num) == s.end())
{
s.insert(num);
cout<<num<<" ";
}
}
cout<<endl;
n--;
}
return 0;
#include <unordered_set>//<unordered_set> 用于使用无序集合数据结构。
using namespace std;
int main()
{
int n;
cin>>n;
while(n)
{
int m;
cin>>m;
set<int>s;
s.clear();//创建一个整数类型的 set 容器 s ,并通过 clear 方法清空它。
for(int i=0;i<m;i++)
{
int num;
cin>>num;
if (s.find(num) == s.end())
{
s.insert(num);
cout<<num<<" ";
}
}
cout<<endl;
n--;
}
return 0;
}
创建一个 set<int> 类型的容器 s,set 的特性是会自动去除重复元素并且内部元素是有序的。通过 s.clear() 确保每次循环开始时 s 是空的。
接下来通过一个 for 循环读取 m 个整数。对于每个读取到的整数 num,使用 s.find(num) 来查找 num 是否已经在 s 中。如果没有找到(即 s.find(num) == s.end()),说明这是一个新的不重复的数字,就将其插入 s 中,并通过 cout 输出该数字,后面跟上一个空格。
当内层的数字处理完成后,换行输出一个换行符,然后将 n 的值减 1,继续下一次外层的循环,直到 n 变为 0 为止。
这种思路的好处在于,通过 set 这种高效的数据结构,可以快速判断一个数字是否已经存在,从而轻松地筛选出不重复的数字进行输出。