#include <vector> #include <set> #include <iostream> #include <map> using namespace std; struct c3dpoint { c3dpoint(int x,int y,int z) { coord[0]=x; coord[1]=y; coord[2]=z; } union { int coord[3]; struct { int x; int y; int z; }; }; }; bool operator < (const c3dpoint &a,const c3dpoint &b) { if(a.x!=b.x) return a.x<b.x; if(a.y!=b.y) return a.y<b.y; return a.z<b.z; } int rands() { return rand()%10; } int main() { //set 里面不会插入重复的元素 set<c3dpoint> stda; cout<<"now insert some/n"; int i; set<c3dpoint>::iterator itit; for(i=0;i<10;++i) { stda.insert(c3dpoint(i,i,i)); stda.insert(c3dpoint(rands(),rands(),rands())); } for(itit=stda.begin();itit!=stda.end();itit++) { cout<<(*itit).x<<"/t"<<(*itit).y<<"/t"<<(*itit).z<<endl; } cout<<"now insert some same items/n"; for(i=0;i<10;++i) { stda.insert(c3dpoint(i,i,i)); } for(itit=stda.begin();itit!=stda.end();itit++) { cout<<(*itit).x<<"/t"<<(*itit).y<<"/t"<<(*itit).z<<endl; } cout<<"now delete some/n"; //find如果查找不到则会返回stda.end(), erase前注意判断 for(int j=0;j<10;++j) { stda.erase(stda.find(c3dpoint(j,j,j))); } for(itit=stda.begin();itit!=stda.end();itit++) { cout<<(*itit).x<<"/t"<<(*itit).y<<"/t"<<(*itit).z<<endl; } }