(C++)Set集合,比較函數


Set的默認將里面的元素從小到大排序。

如果想從大到小,需要用到greater<typename>

如果Set里的元素是string類型的,則是按字典序排序的。

比如:下面這段代碼是按字典序從大到小排列的。

#include<stdio.h>
#include<stdlib.h>
#include<unordered_map>
#include<iostream>
#include<string>
#include<assert.h>
#include<set>
int main() {
    string MainWord = "abppplee";
    set<string, greater<string>> WordPool;
    WordPool.insert("able");
    WordPool.insert("ale");
    WordPool.insert("apple");
    WordPool.insert("bale");
    WordPool.insert("kangaroo");
    //cout << find(MainWord, WordPool) << endl;
    set<string, greater<int>>::iterator it;
    for (it = WordPool.begin(); it != WordPool.end(); it++)
        cout << (*it) << endl;
    return 0;
}

也可以自己寫個結構體來重載比較函數:

#include<stdlib.h>
#include<unordered_map>
#include<iostream>
#include<string>
#include<assert.h>
#include<set>
struct length_more {
    bool operator()(const string& s1, const string& s2) {
        return s1.size() > s2.size();
    }
};
int main() {
    string MainWord = "abppplee";
    set<string, length_more> WordPool;
    WordPool.insert("able");
    WordPool.insert("ale");
    WordPool.insert("apple");
    WordPool.insert("bale");
    WordPool.insert("kangaroo");
    //cout << find(MainWord, WordPool) << endl;
    set<string>::iterator it;
    for (it = WordPool.begin(); it != WordPool.end(); it++)
        cout << (*it) << endl;
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM