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++11 中的std::function和std::bind详解
这篇文章主要介绍了C++ 11 std::function和std::bind,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-10-10


最新评论