怎么用C++做列表去重呢?

输入一个列表,去掉列表中重复的数字,按原来次序输出!

输入格式:
在一行中输入列表

输出格式:
在一行中输出不重复列表元素

输入样例:
在这里给出一组输入。例如:

[4,7,5,6,8,6,9,5]
输出样例:
在这里给出相应的输出。例如:

4 7 5 6 8 9

这题应该用二叉树或者散列表做
#include <iostream>
#include <set>
#include <list>
using namespace std;
int main()
{
int a[]={2, 5, 3, 12, 3, 16, 5, 9, 5};
int a_length=sizeof(a)/sizeof(int);
set<int> s;
pair< set<int>::iterator, bool > p;
list<int> l;
for(int i=0;i<a_length;i++){
p=s.insert(a[i]);
if(p.second) l.push_back(a[i]);
}
cout<<"无输入顺序:";
for(set<int>::iterator iter=s.begin();iter!=s.end(); iter++)
cout<<*iter<<" ";
cout<<"\n记录输入顺序:";
for(list<int>::iterator iter=l.begin();iter!=l.end(); iter++)
cout<<*iter<<" ";
return 0;
}
无输入顺序:2 3 5 9 12 16
记录输入顺序:2 5 3 12 16 9
Process returned 0 (0x0) execution time : 0.016 s
Press any key to continue.

可以读入一个标记一下,如果找到标记,说明读过了,否则就没读过

#include <iostream>
#include <map>
#include <sstream>
using namespace std;
map<int, int> mp;
int main(){
    int m;
    int i = 0;
    string s;
    getline(cin, s);
    stringstream input(s);
    while(input >> m){
        if(mp.find(m) == mp.end()) cout << m << " ";
        mp[m] = 1;
    }
    return 0;
} 

楼上回答的什么东西?所答非所问啊