Set容器默认情况下以operator<进行比较,将小的排在前面,所以如果要自定义Set容器的排序规则,必须对operator<进行重载。例子如下:
struct node {
int value, cnt;
//cnt值不相等时,将cnt值大的排在前面
//当cnt值相等时,将value值小的排在前面
//函数声明最后的const是为了防止类里面的数据被修改
bool operator < (const node &a) const {
return (cnt != a.cnt) ? cnt > a.cnt : value < a.value;
}
};