我正在尝试根据以下逻辑将set<pair<ll,pair<ll,ll> > > st
的元素按降序排列:
bool comp(pair<ll,pair<ll,ll> > a, pair<ll,pair<ll,ll> > b){
if(a.first!=b.first)
return a.first > b.first;
return a.second.first > b.second.first;
}
使用set<pair<ll,pair<ll,ll> > , comp> st;
它出现以下错误:
error: template argument for template type parameter must be a type
通常在对向量进行排序时,我们会做:sort(v.begin(),v.end(),comp)
假设v是...的向量 pair<ll,pair<ll,ll> >
这两种情况有何不同?我应该如何正确执行逻辑?
答案 0 :(得分:0)
与其定义comp
函数,不如使用struct comp
定义operator()
,其逻辑与您的函数相同,但是请记住,它必须是const运算符。>
struct comp{
bool operator () (pair<ll,pair<ll,ll> > a, pair<ll,pair<ll,ll> > b) const {
if(a.first!=b.first)
return a.first > b.first;
return a.second.first > b.second.first;
}
}