[[Property:title|EiffelBase, Sets]]
[[Property:weight|4]]
[[Property:uuid|44d33f46-cfa9-2aca-6b4f-2d9d91723d85]]
Sets are containers where successive occurrences of the same item are not distinguished: inserting the same item twice has the same observable effect as inserting it once.

==Deferred classes==

The most general class describing sets is [[ref:libraries/base/reference/set_chart|SET]] . The usual operations of set theory such as union and intersection have been relegated to [[ref:libraries/base/reference/subset_chart|SUBSET]] , an heir of [[ref:libraries/base/reference/set_chart|SET]] . This enables a class to inherit from [[ref:libraries/base/reference/set_chart|SET]]  without having to effect these operations if it satisfies the basic set property but has no convenient implementation of the subset operations. 

==Sets without a notion of order==

[[ref:libraries/base/reference/linked_set_chart|LINKED_SET]]  provides a basic implementation of [[ref:libraries/base/reference/set_chart|SET]]  by linked lists. 

==Sets of comparable elements and sorted sets==

The deferred class [[ref:libraries/base/reference/comparable_set_chart|COMPARABLE_SET]] , declared as 
<code>
deferred class
    COMPARABLE_SET [G -> COMPARABLE]

        inherit
            SUBSET  [G]
            COMPARABLE_STRUCT  [G]
        ...
</code>

describes sets whose items may be compared by a total order relation. The class has the features [[ref:libraries/base/reference/comparable_set_chart|min]]  and [[ref:libraries/base/reference/comparable_set_chart|max]] . <br/>
Two implementations of [[ref:libraries/base/reference/comparable_set_chart|COMPARABLE_SET]]  are provided. One, [[ref:libraries/base/reference/two_way_sorted_set_chart|TWO_WAY_SORTED_SET]] , uses sorted two-way lists. The other, [[ref:libraries/base/reference/binary_search_tree_set_chart|BINARY_SEARCH_TREE_SET]] , uses binary search trees. <br/>
If the items are partially rather than totally ordered, you may use the class PART_SORTED_SET  [G -> PART_COMPARABLE]], which uses a two-way sorted list implementation. 




