C++自定义实现比较器

 更新时间:2024年01月16日 17:01:13   作者:莫浔  
这篇文章主要为大家详细介绍了如何使用C++自定义实现比较器,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下

sort() 中的比较函数 compare 要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错。

cmpChar实现功能:大写字母大于小写字母,小写字母按 a-z 升序,大写字母按 A-Z 升序

1 在类内部定义比较器

声明为静态成员函数

class Solution {
public:
    void CharacterSort(const vector<char> e_char)
    {
      cout << "before:" << endl;
        for (auto i : e_char) {
            cout << i;
        }
        cout << endl;

        std::sort(e_char.begin(), e_char.end(), cmpChar);
        cout << "after:" << endl;
        for (auto i : e_char) {
            cout << i;
        }
        cout << endl;
    }

private:
    static bool cmpChar(const char &a, const char &b)
    {
        if (a <= 'Z' && b >= 'a')
            return false;
        else if (b <= 'Z' && a >= 'a')
            return true;
        else
            return a < b;
    }

};

输入:
vector e_char = {‘C’,‘B’,‘A’,‘c’,‘b’,‘a’};
输出:
before:
CBAcba
after:
abcABC

2 在函数内部定义比较器

lamda表达式

class Solution {
public:
    void CharacterSort(const vector<char> e_char)
    {
      cout << "before:" << endl;
        for (auto i : e_char) {
            cout << i;
        }
        cout << endl;
        auto cmpChar = [](const char &a, const char &b) {
            if (a <= 'Z' && b >= 'a')
                return false;
            else if (b <= 'Z' && a >= 'a')
                return true;
            else
                return a < b;
        };

        std::sort(e_char.begin(), e_char.end(), cmpChar);
        cout << "after:" << endl;
        for (auto i : e_char) {
            cout << i;
        }
        cout << endl;
    }

3 全局函数比较器

using namespace std;

bool cmpChar(const char &a, const char &b)
    {
        if (a <= 'Z' && b >= 'a')
            return false;
        else if (b <= 'Z' && a >= 'a')
            return true;
        else
            return a < b;
    }

class Solution {
public:
    void CharacterSort(const vector<char> e_char)
    {
      cout << "before:" << endl;
        for (auto i : e_char) {
            cout << i;
        }
        cout << endl;

        std::sort(e_char.begin(), e_char.end(), cmpChar);
        cout << "after:" << endl;
        for (auto i : e_char) {
            cout << i;
        }
        cout << endl;
    }

以上就是C++自定义实现比较器的详细内容,更多关于C++比较器的资料请关注脚本之家其它相关文章!

相关文章

  • 软件构建工具makefile基础讲解

    软件构建工具makefile基础讲解

    这篇文章介绍了软件构建工具makefile,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 一篇文章带你了解C++的KMP算法

    一篇文章带你了解C++的KMP算法

    这篇文章主要介绍了c++ 实现KMP算法的示例,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • FFmpeg中avfilter模块的介绍与使用

    FFmpeg中avfilter模块的介绍与使用

    FFmpeg中的libavfilter模块(或库)用于filter(过滤器), filter可以有多个输入和多个输出,下面就跟随小编一起简单学习一下它的巨日使用吧
    2023-08-08
  • C/C++实现控制台输出不同颜色字体的方法

    C/C++实现控制台输出不同颜色字体的方法

    这篇文章主要介绍了C/C++实现控制台输出不同颜色字体的方法,涉及C++控制台文字属性相关设置操作技巧,需要的朋友可以参考下
    2017-09-09
  • Qt QTableWidget基本操作及使用

    Qt QTableWidget基本操作及使用

    QTableWidget 是 Qt 中的表格组件类。很类似于VC、C#中的DataGrid,本文就详细来介绍一下Qt QTableWidget基本操作及使用,感兴趣的可以了解一下
    2021-11-11
  • C++实现LeetCode(101.判断对称树)

    C++实现LeetCode(101.判断对称树)

    这篇文章主要介绍了C++实现LeetCode(101.判断对称树),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++11 中的std::function和std::bind详解

    C++11 中的std::function和std::bind详解

    这篇文章主要介绍了C++ 11 std::function和std::bind,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • C语言实现教务管理系统

    C语言实现教务管理系统

    这篇文章主要为大家详细介绍了C语言实现教务管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++11中可变模板参数的实现

    C++11中可变模板参数的实现

    C++11的可变参数模板允许创建可以接受可变参数的函数和类模板,通过递归展开参数包来处理每个参数,下面就来介绍一下,感兴趣的可以了解一下
    2024-12-12
  • C++编程中使用设计模式中的policy策略模式的实例讲解

    C++编程中使用设计模式中的policy策略模式的实例讲解

    这篇文章主要介绍了C++编程中使用设计模式中的policy策略模式的实例讲解,文章最后对策略模式的优缺点有一个简单的总结,需要的朋友可以参考下
    2016-03-03

最新评论