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....