#include <cstdlib> #include <iostream> #include <list> #include <iterator> #include <algorithm> using namespace std; typedef struct _NODE { string str; int id; _NODE(string str, int val) : str(str), id(val){}; friend bool operator==(const _NODE &nod, const _NODE &node) { return nod.id == node.id; } friend bool operator<(const _NODE &nod, const _NODE &node) { return nod.id < node.id; } friend ostream& operator<<(ostream &os, const _NODE &nod) { return os << "(" << nod.id <<", " << nod.str << ")" << endl; } }NODE; int main(int argc, char *argv[]) { list<NODE> lis; for(int i=0; i<10; i++) { NODE temp("string", rand () % 5); lis.push_back(temp); } cout << "init list: " << endl; ostream_iterator<NODE> os(cout, ""); copy(lis.begin(), lis.end(), os); cout << endl; lis.sort(); lis.unique(); cout << "after remove the duplicated elements: " << endl; ostream_iterator<NODE> _os(cout, ""); copy(lis.begin(), lis.end(), _os); cout << endl; system("PAUSE"); return EXIT_SUCCESS; } 切记:在使用unique之前(不论是list的unique还是泛型的unique), 都必须先对容器内的元素进行排序, 因为unique()是比较相邻的元素. 去掉相邻元素中重复的...