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++比较器的资料请关注脚本之家其它相关文章!

相关文章

  • C++实现简单的学生成绩管理系统

    C++实现简单的学生成绩管理系统

    这篇文章主要为大家详细介绍了C++实现简单的学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 详解C语言中strcpy()函数与strncpy()函数的使用

    详解C语言中strcpy()函数与strncpy()函数的使用

    这篇文章主要介绍了详解C语言中strcpy()函数与strncpy()函数的使用,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C++ STL容器适配器使用指南

    C++ STL容器适配器使用指南

    C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈,今天我们来探究一下stl容器适配器的使用吧
    2021-11-11
  • C++中vector的常用接口详析说明

    C++中vector的常用接口详析说明

    vector类我们可以将其看作是一个能够动态扩容的数组,下面这篇文章主要给大家介绍了关于 C++ vector常用接口的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • C语言指针详解

    C语言指针详解

    这篇文章非常详细的讲解了C语言中指针的概念,包含多种方法,多种定义,全面的说明了C语言的特性
    2021-06-06
  • C++实现LeetCode(56.合并区间)

    C++实现LeetCode(56.合并区间)

    这篇文章主要介绍了C++实现LeetCode(56.合并区间),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++编译器Clion的使用详解(总结)

    C++编译器Clion的使用详解(总结)

    Clion有一个比较让人郁闷的地方就是必须要把编译环境配置好了,IDE才去做代码分析等动作,但是还是有很多优点,本文重点给大家介绍C++编译器Clion的使用,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • C++ Boost Intrusive库示例精讲

    C++ Boost Intrusive库示例精讲

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • 使用Qt的QChartView实现缩放和放大功能

    使用Qt的QChartView实现缩放和放大功能

    QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线、动态曲线、多重坐标曲线,柱状图,蜡烛图,这篇文章主要介绍了Qt的QChartView实现缩放和放大功能,需要的朋友可以参考下
    2022-09-09
  • c++截取汉字和英文混合字符串代码实例

    c++截取汉字和英文混合字符串代码实例

    这篇文章主要介绍了c++截取汉字英文混合字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论