如何全局构建自定义比较器函数?

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;

尝试理解、探索更多并在代码中实现

【讨论】:

以上是关于如何全局构建自定义比较器函数?的主要内容,如果未能解决你的问题,请参考以下文章

Vue自定义指令

vue3.2 setup 之局部自定义指令

vue3.2 setup 之局部自定义指令

[moka同学笔记]Yii2 自定义class自定义全局函数(摘录)

对于一些stl自定义比较函数

laravel 自定义全局函数