set容器存放内置数据类型 如int char等,可以用*p (p是迭代器) 的方式
但是存放自定义的数据类型,比如类,*it就不行了
问题已经解决。。。*it外面需要加上括号括起来 。。晕死。
#include<iostream>
#include<string>
#include<set>
#include<algorithm>
using namespace std;
void test(){
class Pet{
public:
int age;
string name;
string type;
Pet(int age,string name,string type){
this->age=age;
this->name=name;
this->type=type;
}
};
Pet p1(3,"polo","cat");
Pet p2(10,"aimi","dog");
Pet p3(9,"tom","dog");
Pet p4(4,"niangao","cat");
Pet p5(3,"lily","dog");
//类的排序规则 pet
class petcom {
public:
// 仿函数 重载加号
bool operator()(const Pet &p1,const Pet &p2) {
if(p1.age==p2.age){
return p1.type>p2.type;
}
else{
return p1.age>p2.age;
}
}
};
set<Pet,petcom>s;
s.insert(p1);
s.insert(p2);
s.insert(p3);
s.insert(p4);
s.insert(p5);
for(auto it=s.begin();it!=s.end();it++){
cout<<it->age<<" "<<it->name<<" "<<it->type<<endl;
}
}
int main(){
test();
system("pause");
return 0;
}
将宠物按照年龄 降序排列,如果年龄相同按照种类(dog在cat前面)
但是遍历时如果写成*it.age *it.name就会报错。必须用指针。
版权声明:本文为warmingsummer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。