set自定義排序

2021-10-10 00:06:09 字數 1422 閱讀 3688

set一般插入元素時,預設使用關鍵字型別的<運算子來比較兩個關鍵字,故一般插入後為公升序,但是針對自定義資料結構,如結構體,沒有<運算子,故無法進行比較。針對自定義資料結構或者說自定義set排序規則有如下幾種方法:

在自定義結構體中過載<則可以實現預設排序,示例**如下:

#include

#include

using

namespace

std;

struct students

students() {}

bool

operator

執行結果如下:

示例**如下:

#include

#include

using

namespace

std;

struct students

students() {}

};class comp

示例**如下:

#include

#include

using

namespace

std;

struct students

students() {}

};bool cmp(const students &s1,const students &s2)

上述**中,用decltype來指出自定義操作的型別。當使用decltype來獲得乙個函式指標型別時,必須加上乙個*來指出我們要使用乙個給定函式型別的指標。用cmp來初始化se物件,這表示當我們向se中插入元素時,通過呼叫cmp來為這些元素排序。可以使用cmp代替&cmp作為建構函式的引數,因為當我們使用乙個函式的名字時,在需要的情況下會自動轉化為乙個指標,使用&cmp效果也是一樣的。

emplace對應insert,emplace_back對應於push_back;但是insertpush_back是直接將物件拷貝至容器當中,而emplaceemplace_back是先呼叫儲存物件建構函式,在記憶體中生成物件,然後拷貝至容器中。

DataGridView自定義排序

net自帶datagridview排序貌似最終都是用datagridview.sort 發現當是用排序後,datagridview將把排序前的行樣式等重置,仔細測試後覺得貌似是排序時datagridview重新繫結了資料來源,具體不得而知.實在沒有辦法破解,我也不想重新寫比較來排序,用了最土的辦法,...

QTableWidget 自定義排序

qtablewidget功能強大,可以在每個格仔裡新增自己的wiget部件。如果想對這些自己新增的widget進行排序有兩種方法。一種是直接設定每個格仔對應的qtablewidgetitem的值,因為qtablewidget預設是據qtablewidgetitem來排序,呼叫的比較函式是 bool ...

python list 自定義排序

看到的乙個知識點,稍加記錄 a 希望將上述的list排序,按照每條記錄中的 score 排序。如果 score 欄位的值相等,則按照 first 的值排序。如果 first 依舊相等,則按照 second 排序。如果 second 相等,則按照 third 欄位的值來排序。a.sort.doc l....