STL set复杂类型操作
以前用set的时候总是小打小闹,参数类型基本是string,int,后来遇到需要用类和结构体做参数的,如下所示:
1234567891011121314classCStudent{public:intnStudentID;intnAge;public://缺省构造函数——通常为空CStudent() { }// 完整的构造函数CStudent(intnSID,intnA) { nStudentID=nSID; nAge=nA; }};set <CStudent> mapStudent;mapStudent.insert(CStudent(100232,42));
然后就是一堆问题....
后来试了好久发觉类有一定的要求,STL作为一个容器只是在调用相应的方法,set的基本要求应该是拷贝构造函数,赋值运算符重载,大于小于运算符重载,如下所示:
12345678910111213141516171819202122232425262728293031323334classCStudent{public:intnStudentID;intnAge;public://缺省构造函数——通常为空CStudent() { }// 完整的构造函数CStudent(intnSID,intnA) { nStudentID=nSID; nAge=nA; }//拷贝构造函数CStudent(constCStudent& ob){nStudentID=ob.nStudentID; nAge=ob.nAge;}// 重载“=”voidoperator = (constCStudent& ob){nStudentID=ob.nStudentID; nAge=ob.nAge;}booloperator < (constCStudent& ob)const{returnnStudentID<ob.nStudentID;}booloperator >(constCStudent& ob){returnnStudentID>ob.nStudentID;}};set <CStudent> mapStudent;mapStudent.insert(CStudent(100232,42));
然后就没问题了。
浙公网安备 33010602011771号