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-07C++11 中的std::function和std::bind詳解
這篇文章主要介紹了C++ 11 std::function和std::bind,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-10-10