檢視原始碼 ordsets (stdlib v6.2)
用於操作以排序列表表示的集合的函式。
集合是不包含重複元素的元素集合。 ordset
是一種集合的表示方式,其中使用排序列表來儲存集合的元素。排序列表比未排序列表更有效率。元素會根據Erlang 項的順序進行排序。
此模組提供與 sets
模組相同的介面,但具有定義的表示方式。一個差異是,當 sets
認為兩個元素如果不匹配 ( =:=
) 則視為不同時,此模組僅在兩個元素不相等 ( ==
) 時才視為不同。
有關標準程式庫中不同集合實作的相容性資訊,請參閱 sets
模組中的相容性章節。
另請參閱
摘要
函式
傳回由 Ordset1
形成的新排序集合,並插入 Element
。
傳回 Ordset1
,但移除 Element
。
使用布林函式 Pred
過濾 Ordset1
中的元素。
使用函式 Fun
過濾和映射 Ordset1
中的元素。
將 Function
摺疊在 Ordset
中的每個元素上,並傳回累積器的最終值。
傳回 List
中元素的排序集合。
傳回非空集合列表的交集。
傳回 Ordset1
和 Ordset2
的交集。
如果 Ordset1
和 Ordset2
不相交(沒有共同元素),則傳回 true
,否則傳回 false
。
如果 Element
是 Ordset
的元素,則傳回 true
,否則傳回 false
。
如果 Ordset
是空集合,則傳回 true
,否則傳回 false
。
如果 Ordset1
和 Ordset2
相等,也就是說,當一個集合的每個元素也是另一個集合的成員時,則傳回 true
,否則傳回 false
。
如果 Ordset
是元素的排序集合,則傳回 true
,否則傳回 false
。 此函式將為任何排序列表傳回 true
,即使不是由此模組中的函式建構的。
當 Ordset1
的每個元素也是 Ordset2
的成員時,傳回 true
,否則傳回 false
。
使用映射函式 Fun
映射 Ordset1
中的元素。
傳回新的空排序集合。
傳回 Ordset
中的元素數量。
僅傳回 Ordset1
中不是 Ordset2
元素的元素。
以列表形式傳回 Ordset
的元素。
傳回集合列表的合併(聯集)集合。
傳回 Ordset1
和 Ordset2
的合併(聯集)集合。
型別
函式
-spec add_element(Element, Ordset1) -> Ordset2 when Element :: E, Ordset1 :: ordset(T), Ordset2 :: ordset(T | E).
傳回由 Ordset1
形成的新排序集合,並插入 Element
。
-spec del_element(Element, Ordset1) -> Ordset2 when Element :: term(), Ordset1 :: ordset(T), Ordset2 :: ordset(T).
傳回 Ordset1
,但移除 Element
。
-spec filter(Pred, Ordset1) -> Ordset2 when Pred :: fun((Element :: T) -> boolean()), Ordset1 :: ordset(T), Ordset2 :: ordset(T).
使用布林函式 Pred
過濾 Ordset1
中的元素。
-spec filtermap(Fun, Ordset1) -> Ordset2 when Fun :: fun((Element1 :: T1) -> boolean | {true, Element2 :: T2}), Ordset1 :: ordset(T1), Ordset2 :: ordset(T1 | T2).
使用函式 Fun
過濾和映射 Ordset1
中的元素。
-spec fold(Function, Acc0, Ordset) -> Acc1 when Function :: fun((Element :: T, AccIn :: term()) -> AccOut :: term()), Ordset :: ordset(T), Acc0 :: term(), Acc1 :: term().
將 Function
摺疊在 Ordset
中的每個元素上,並傳回累積器的最終值。
-spec from_list(List) -> Ordset when List :: [T], Ordset :: ordset(T).
傳回 List
中元素的排序集合。
傳回非空集合列表的交集。
-spec intersection(Ordset1, Ordset2) -> Ordset3 when Ordset1 :: ordset(_), Ordset2 :: ordset(_), Ordset3 :: ordset(_).
傳回 Ordset1
和 Ordset2
的交集。
如果 Ordset1
和 Ordset2
不相交(沒有共同元素),則傳回 true
,否則傳回 false
。
如果 Element
是 Ordset
的元素,則傳回 true
,否則傳回 false
。
如果 Ordset
是空集合,則傳回 true
,否則傳回 false
。
如果 Ordset1
和 Ordset2
相等,也就是說,當一個集合的每個元素也是另一個集合的成員時,則傳回 true
,否則傳回 false
。
如果 Ordset
是元素的排序集合,則傳回 true
,否則傳回 false
。 此函式將為任何排序列表傳回 true
,即使不是由此模組中的函式建構的。
當 Ordset1
的每個元素也是 Ordset2
的成員時,傳回 true
,否則傳回 false
。
-spec map(Fun, Ordset1) -> Ordset2 when Fun :: fun((Element1 :: T1) -> Element2 :: T2), Ordset1 :: ordset(T1), Ordset2 :: ordset(T2).
使用映射函式 Fun
映射 Ordset1
中的元素。
-spec new() -> [].
傳回新的空排序集合。
-spec size(Ordset) -> non_neg_integer() when Ordset :: ordset(_).
傳回 Ordset
中的元素數量。
-spec subtract(Ordset1, Ordset2) -> Ordset3 when Ordset1 :: ordset(_), Ordset2 :: ordset(_), Ordset3 :: ordset(_).
僅傳回 Ordset1
中不是 Ordset2
元素的元素。
-spec to_list(Ordset) -> List when Ordset :: ordset(T), List :: [T].
以列表形式傳回 Ordset
的元素。
傳回集合列表的合併(聯集)集合。
-spec union(Ordset1, Ordset2) -> Ordset3 when Ordset1 :: ordset(T1), Ordset2 :: ordset(T2), Ordset3 :: ordset(T1 | T2).
傳回 Ordset1
和 Ordset2
的合併(聯集)集合。