c 中std set自定義去重和排序函式

2021-09-30 18:25:41 字數 930 閱讀 1843

c++中的std::set,是基於紅黑樹的平衡二叉樹的資料結構實現的一種容器,因為其中所包含的元素的值是唯一的,因此主要用於去重和排序。這篇文章的目的在於**和分享如何正確使用std::set實現去重和排序功能。

1.方法一:使用std::set內建的less比較函式(直接定義內建型別的set物件)

這種方法適用於:1)比較int、char等內建型別。2)只能針對某乙個內建型別去重和排序:如果想通過id(int)去重,並通過hot(int)排序,該種方法就束手無策了。**如下:

#include #include using namespace std;

void main()

bool operator<(const struct song & right)const //過載《運算子

else}}

};void main()

/*bool operator<(const struct song & right)const //過載《運算子

else}}

*/};struct comp

else}}

};void main()

{ std::setmyset; //寫法和2.1中的的區別

song s1(10,100);

song s2(20,200);

song s3(20,300);

song s4(30,200);

myset.insert(s1); //插入s1

myset.insert(s2); //插入s2

myset.insert(s3); //s3和s2的id相同,不插入

myset.insert(s4); //插入s4

for(auto it:myset)

{std::cout<<"id:"<

Linq去重(自定義字段)

業務場景,接受乙個datatable 根需求需要按照品號去重 業務場景 明細表存在多筆相同品號 在這樣的場景下不能簡單的使用如下寫法去重 var list tempdatatable.asenumerable where p p total inv qty todecimal p total iss...

lamda根據自定義條件去重

由於distinct 不提供按照屬性對物件列表進行去重的直接實現,要想按物件屬性去重無法實現。解決方案 public static predicate distinctbykey function super t,object keyextractor res res.stream filter x...

C 自定義重繪TabControl

using system.drawing using system.windows.forms using system.drawing.drawing2d using system.runtime.interopservices using system using system.drawing....