#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;
}
创建一个 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 这种高效的数据结构,可以快速判断一个数字是否已经存在,从而轻松地筛选出不重复的数字进行输出。