set自定义比较函数

该篇博客主要展示了如何在C++中为set自定义比较函数,通过struct cmp实现节点按照计数和时间戳的优先级进行排序,并在main函数中进行了实际操作示例,用于解决字符串出现次数和时间顺序的问题。
摘要由CSDN通过智能技术生成
#include<iostream>
#include<map>
#include<string>
#include<climits>
#include<set>
#include<queue>
#include<cstring>
using namespace std;

struct node{
	string s;
	int cnt;
	int time;
	node(){
	}
	node(string a,int b,int c):s(a),cnt(b),time(c){
	}
//	bool operator < (const node & b) const{
//		if(cnt>b.cnt) return true;
//		if(cnt<b.cnt) return false;
//		return time<b.time;
//	}
};

struct cmp{
	bool operator()(const node &a,const node &b) const
	{
		
		if(a.cnt<b.cnt) return false;
		if(a.cnt>b.cnt) return true;
		return a.time<b.time;
	}
};

int main()
{
	int t,n;
	cin>>t;
	set<node,cmp> st;
	while(t--){
		cin>>n;
		string s;
		string ans;
		int c;
		st.clear();
		for(int i=0;i<n;i++){
			cin>>s>>c;
			node nd(s,c,i);
			if(st.empty()) st.insert(nd);
			else{
				int ok=0;
				for(set<node,cmp>::iterator it=st.begin();it
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值