C++自定義實現(xiàn)比較器
sort() 中的比較函數(shù) compare 要聲明為靜態(tài)成員函數(shù)或全局函數(shù),不能作為普通成員函數(shù),否則會報錯。
cmpChar實現(xiàn)功能:大寫字母大于小寫字母,小寫字母按 a-z 升序,大寫字母按 A-Z 升序
1 在類內(nèi)部定義比較器
聲明為靜態(tài)成員函數(shù)
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 在函數(shù)內(nèi)部定義比較器
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 全局函數(shù)比較器
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++自定義實現(xiàn)比較器的詳細內(nèi)容,更多關(guān)于C++比較器的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++實現(xiàn)LeetCode(101.判斷對稱樹)
這篇文章主要介紹了C++實現(xiàn)LeetCode(101.判斷對稱樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
C++11 中的std::function和std::bind詳解
這篇文章主要介紹了C++ 11 std::function和std::bind,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-10-10

