C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++比较器

C++自定义实现比较器

作者:莫浔

这篇文章主要为大家详细介绍了如何使用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++比较器的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文