#include <iostream>
#include <set>
using namespace std;
struct Node{
int id,value;
Node(){}
Node(int _id,int _value):id(_id),value(_value){}
bool operator < (const Node& b)const {
if(id == b.id)return false;//去重环节
//排序环节(这里是按value降序,id升序)
if(value != b.value)return value > b.value;
else return id < b.id;
}
};
int main(){
set<Node> S;
S.insert(Node(1,2));
S.insert(Node(2,3));
S.insert(Node(2,4));//因为id重复插入失败
S.insert(Node(3,4));
S.insert(Node(4,4));
set<Node>::iterator it;
for(it=S.begin() ; it!=S.end() ; ++it)printf("id:%d value:%d\n",(*it).id,(*it).value);
return 0;
}
运行结果: