查看源代码 ordsets (stdlib v6.2)

用于操作作为有序列表的集合的函数。

集合是不包含重复元素的元素集合。一个 ordset 是一个集合的表示,其中使用有序列表来存储集合的元素。有序列表比无序列表更有效率。元素按照Erlang 术语顺序排序。

此模块提供了与 sets 模块相同的接口,但具有定义的表示。一个不同之处是,虽然 sets 认为如果两个元素不匹配 ( =:=) 则它们是不同的,但此模块认为两个元素只有在它们不相等 ( ==) 时才是不同的。

有关标准库中集合的不同实现之间的兼容性的更多信息,请参阅 sets 模块中的兼容性部分

另请参阅

gb_sets, sets

摘要

类型

new/0 返回。

函数

返回一个新排序的集合,该集合由插入了 ElementOrdset1 形成。

返回 Ordset1,但删除了 Element

使用布尔函数 Pred 过滤 Ordset1 中的元素。

使用函数 Fun 过滤和映射 Ordset1 中的元素。

Function 折叠到 Ordset 中的每个元素上,并返回累加器的最终值。

返回 List 中元素的有序集合。

返回非空集合列表的交集。

返回 Ordset1Ordset2 的交集。

如果 Ordset1Ordset2 是不相交的(没有共同的元素),则返回 true,否则返回 false

如果 ElementOrdset 的元素,则返回 true,否则返回 false

如果 Ordset 是空集合,则返回 true,否则返回 false

如果 Ordset1Ordset2 相等,即当一个集合的每个元素也是另一个集合的成员时,则返回 true,否则返回 false

如果 Ordset 是元素的有序集合,则返回 true,否则返回 false。此函数将为任何有序列表返回 true,即使不是由此模块中的函数构造的。

Ordset1 的每个元素也是 Ordset2 的成员时,返回 true,否则返回 false

使用映射函数 Fun 映射 Ordset1 中的元素。

返回一个新的空有序集合。

返回 Ordset 中的元素数量。

仅返回 Ordset1 中也是 Ordset2 的元素的元素。

Ordset 的元素作为列表返回。

返回集合列表的合并(并集)集合。

返回 Ordset1Ordset2 的合并(并集)集合。

类型

-type ordset(T) :: [T].

new/0 返回。

函数

链接到此函数

add_element(Element, Ordset1)

查看源代码
-spec add_element(Element, Ordset1) -> Ordset2
                     when Element :: E, Ordset1 :: ordset(T), Ordset2 :: ordset(T | E).

返回一个新排序的集合,该集合由插入了 ElementOrdset1 形成。

链接到此函数

del_element(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 中的元素。

链接到此函数

filtermap(Fun, Ordset1)

查看源代码 (自 OTP 27.0 起)
-spec filtermap(Fun, Ordset1) -> Ordset2
                   when
                       Fun :: fun((Element1 :: T1) -> boolean | {true, Element2 :: T2}),
                       Ordset1 :: ordset(T1),
                       Ordset2 :: ordset(T1 | T2).

使用函数 Fun 过滤和映射 Ordset1 中的元素。

链接到此函数

fold(Function, Acc0, Ordset)

查看源代码
-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 中元素的有序集合。

链接到此函数

intersection(OrdsetList)

查看源代码
-spec intersection(OrdsetList) -> Ordset when OrdsetList :: [ordset(_), ...], Ordset :: ordset(_).

返回非空集合列表的交集。

链接到此函数

intersection(Ordset1, Ordset2)

查看源代码
-spec intersection(Ordset1, Ordset2) -> Ordset3
                      when Ordset1 :: ordset(_), Ordset2 :: ordset(_), Ordset3 :: ordset(_).

返回 Ordset1Ordset2 的交集。

链接到此函数

is_disjoint(Ordset1, Ordset2)

查看源代码
-spec is_disjoint(Ordset1, Ordset2) -> boolean() when Ordset1 :: ordset(_), Ordset2 :: ordset(_).

如果 Ordset1Ordset2 是不相交的(没有共同的元素),则返回 true,否则返回 false

链接到此函数

is_element(Element, Ordset)

查看源代码
-spec is_element(Element, Ordset) -> boolean() when Element :: term(), Ordset :: ordset(_).

如果 ElementOrdset 的元素,则返回 true,否则返回 false

链接到此函数

is_empty(Ordset)

查看源代码 (自 OTP 21.0 起)
-spec is_empty(Ordset) -> boolean() when Ordset :: ordset(_).

如果 Ordset 是空集合,则返回 true,否则返回 false

链接到此函数

is_equal(Ordset1, Ordset2)

查看源代码 (自 OTP 27.0 起)
-spec is_equal(Ordset1, Ordset2) -> boolean() when Ordset1 :: ordset(_), Ordset2 :: ordset(_).

如果 Ordset1Ordset2 相等,即当一个集合的每个元素也是另一个集合的成员时,则返回 true,否则返回 false

-spec is_set(Ordset) -> boolean() when Ordset :: term().

如果 Ordset 是元素的有序集合,则返回 true,否则返回 false。此函数将为任何有序列表返回 true,即使不是由此模块中的函数构造的。

链接到此函数

is_subset(Ordset1, Ordset2)

查看源代码
-spec is_subset(Ordset1, Ordset2) -> boolean() when Ordset1 :: ordset(_), Ordset2 :: ordset(_).

Ordset1 的每个元素也是 Ordset2 的成员时,返回 true,否则返回 false

链接到此函数

map(Fun, Ordset1)

查看源代码 (自 OTP 27.0 起)
-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 中的元素数量。

链接到此函数

subtract(Ordset1, Ordset2)

查看源代码
-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(OrdsetList) -> Ordset when OrdsetList :: [ordset(T)], Ordset :: ordset(T).

返回集合列表的合并(并集)集合。

链接到此函数

union(Ordset1, Ordset2)

查看源代码
-spec union(Ordset1, Ordset2) -> Ordset3
               when Ordset1 :: ordset(T1), Ordset2 :: ordset(T2), Ordset3 :: ordset(T1 | T2).

返回 Ordset1Ordset2 的合并(并集)集合。