set 中物件元素插入與查詢

2021-08-04 23:55:49 字數 827 閱讀 5869

使用 set::find 函式在 set 集合中尋找元素時,若元素定義了 operator < 方法,則使用此函式在 set 維護的紅黑樹中查詢。否則編譯時期報錯。

還可以通過給 set 指定第二個泛型型別:彷函式(此時,不需要再定義 operator <)。如:

class processinfosortrule

};setinfos; //使用 processinfosortrule 作為 infos 的排序規則。注意, set 接收的彷函式,必須滿足規則:返回 true 表示比較的兩個元素左邊 < 右邊。

以上兩種方法,operator < 或彷函式,在插入元素時也會被用來尋找元素應該插入的位置。

上面彷函式的使用是給 set 傳入了乙個相關的類,另外一種用法是傳入乙個物件。

看下面這個類:

class lessthan

bool operator()(const processinfo& l)

};bool (lessthan::* myless)(const processinfo&);

myless = &lessthan::operator();

int count = count_if(infos.begin(), infos.end(), lessthan(100)); //此處的語法看起來奇怪,實際上這樣寫更易看懂

lessthan less(100);

int count = count_if(infos.begin(), infos.end(), lessthan(less)); //構建乙個物件給 count_info 使用,count_info 只是要求在傳入物件上面可以呼叫 operator () 即可。

List 去掉物件元素

經常需要將list中重複元素去掉,或者判斷兩個list中相同的元素。1 通過set介面,set 不包含滿足e1.equals e2 hashset set new hashset list2 list2.clear list2.addall set 2 普通方法,每個元素在list中進行比較 for...

獲取 設定IFRAME內物件元素的幾種JS方法

ie專用 通過frames索引形象定位 document.frames i document.getelementbyid 元素的id ie專用 通過iframe名稱形象定位 document.frames iframe的name document.getelementbyid 元素的id 以上方法...

ArrayList去除集合中自定義物件元素的重複值

需求 arraylist去除集合中自定義物件元素的重複值 物件的成員變數值相同 b 注意事項 重寫equals 方法的 contains方法判斷是否包含,底層依賴的是equals方法 remove方法判斷是否刪除,底層依賴的是equals方法 public class demo2 arraylist...