查看源代码 ordsets (stdlib v6.2)
用于操作作为有序列表的集合的函数。
集合是不包含重复元素的元素集合。一个 ordset
是一个集合的表示,其中使用有序列表来存储集合的元素。有序列表比无序列表更有效率。元素按照Erlang 术语顺序排序。
此模块提供了与 sets
模块相同的接口,但具有定义的表示。一个不同之处是,虽然 sets
认为如果两个元素不匹配 ( =:=
) 则它们是不同的,但此模块认为两个元素只有在它们不相等 ( ==
) 时才是不同的。
有关标准库中集合的不同实现之间的兼容性的更多信息,请参阅 sets
模块中的兼容性部分。
另请参阅
摘要
函数
返回一个新排序的集合,该集合由插入了 Element
的 Ordset1
形成。
返回 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).
返回一个新排序的集合,该集合由插入了 Element
的 Ordset1
形成。
-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
的合并(并集)集合。