C++自定義實(shí)現(xiàn)比較器
sort() 中的比較函數(shù) compare 要聲明為靜態(tài)成員函數(shù)或全局函數(shù),不能作為普通成員函數(shù),否則會(huì)報(bào)錯(cuò)。
cmpChar實(shí)現(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表達(dá)式
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++自定義實(shí)現(xiàn)比較器的詳細(xì)內(nèi)容,更多關(guān)于C++比較器的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C/C++實(shí)現(xiàn)控制臺(tái)輸出不同顏色字體的方法
這篇文章主要介紹了C/C++實(shí)現(xiàn)控制臺(tái)輸出不同顏色字體的方法,涉及C++控制臺(tái)文字屬性相關(guān)設(shè)置操作技巧,需要的朋友可以參考下2017-09-09C++實(shí)現(xiàn)LeetCode(101.判斷對稱樹)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(101.判斷對稱樹),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++11 中的std::function和std::bind詳解
這篇文章主要介紹了C++ 11 std::function和std::bind,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-10-10C語言實(shí)現(xiàn)教務(wù)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)教務(wù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++11中可變模板參數(shù)的實(shí)現(xiàn)
C++11的可變參數(shù)模板允許創(chuàng)建可以接受可變參數(shù)的函數(shù)和類模板,通過遞歸展開參數(shù)包來處理每個(gè)參數(shù),下面就來介紹一下,感興趣的可以了解一下2024-12-12C++編程中使用設(shè)計(jì)模式中的policy策略模式的實(shí)例講解
這篇文章主要介紹了C++編程中使用設(shè)計(jì)模式中的policy策略模式的實(shí)例講解,文章最后對策略模式的優(yōu)缺點(diǎn)有一個(gè)簡單的總結(jié),需要的朋友可以參考下2016-03-03