如何全局构建自定义比较器函数?
Posted
技术标签:
【中文标题】如何全局构建自定义比较器函数?【英文标题】:How to construct a Custom Comparator function globally? 【发布时间】:2022-01-03 10:33:02 【问题描述】:我不熟悉构建自定义比较器函数的概念。 我想知道的是,我们是否可以构造一个比较器函数,该函数可用于对每种类型的向量进行排序,即基于第二个值的列表向量、排序图、降序排序。
请帮帮我
【问题讨论】:
不,每种情况都需要单独的比较器函数。 你会如何处理那些从未打算比较的类型?你最好依赖通常的operator<
和朋友,如果有意义的话,哪些类型会提供重载。
【参考方案1】:
假设你声明了一个对向量[包含多个这样对的向量称为对向量]。下面的例子是根据pair的第二个值对向量进行排序。
bool cmp(pair<int,int>p1, pair<int,int>p2)
// if second value is equal then sorted based on first value
if(p1.second==p2.second)
return p1.first<p2.first;
// otherwise based on second value
return p1.second<p2.second;
int main()
vector<pair<int,int> >vec;
vec.push_back(make_pair(3,4));
vec.push_back(make_pair(5,2));
vec.push_back(make_pair(10,6));
vec.push_back(make_pair(8,6));
vec.push_back(make_pair(7,3));
sort(vec.begin(), vec.end(), cmp);
for(auto x:vec)
cout<<x.first<<" "<<x.second<<"\n";
/*
5 2
7 3
3 4
8 6
10 6
*/
return 0;
尝试理解、探索更多并在代码中实现
【讨论】:
以上是关于如何全局构建自定义比较器函数?的主要内容,如果未能解决你的问题,请参考以下文章