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