template<typename T, Bool SORTED = true, typename COMPARE = DefaultCompare, typename ARRAY = BaseArraySelector<>>
class maxon::ArraySet< T, SORTED, COMPARE, ARRAY >
An ArraySet is an implementation of a set using an underlying array. An element is in the set if it is in the array. ArraySet is based on ArrayMap and takes care of not inserting an element twice in the array. Like ArrayMap, ArraySet may be either sorted or unsorted. For very small sets, unsorted array sets are generally faster. For large sets (exceeding about 100 entries), you should consider using another implementation such as HashSet or BurstTrieSet because especially insertion and erasure become slow with array sets: For a sorted ArraySet, those operations have a time cost of O(N), while searching has a time cost of O(log N).
Of all sets, the ArraySet is the most efficient with respect to memory usage as it really only stores the contained values.
See HashSet for more examples on how to use sets in general.
- Template Parameters
-
T | Type of elements of the set. |
SORTED | Use true for a sorted array. |
COMPARE | Class to be used to compare the values. |
ARRAY | An array selector template to choose the array implementation to use. |
- See also
- ArrayMap
-
$ref sets
|
| ArraySet () |
|
| ArraySet (ArraySet &&src) |
|
| MAXON_OPERATOR_MOVE_ASSIGNMENT (ArraySet) |
|
MapType & | GetMap () |
|
const MapType & | GetMap () const |
|
Bool | Contains (typename ByValueParam< T >::type value) const |
|
ResultMemT< Iterator > | Insert (const T &value, Bool &added=BoolLValue()) |
|
ResultMemT< Iterator > | Insert (T &&value, Bool &added=BoolLValue()) |
|
ResultRef< const T > | InsertKey (const T &value, Bool &added=BoolLValue()) |
|
ResultRef< const T > | InsertKey (T &&value, Bool &added=BoolLValue()) |
|
ResultOk< Bool > | Erase (const T &value) |
|
ConstIterator | Begin () const |
|
ConstIterator | End () const |
|
Iterator | Begin () |
|
Iterator | End () |
|
Iterator | Erase (const Iterator &it) |
|
const ARRAY::template Type< T > & | GetUnderlyingArray () const |
|
ARRAY::template Type< T > & | GetUnderlyingArray () |
|
template<typename KEYCOMPARE = COMPARE, typename KEY = K> |
Iterator | Find (const KEY &key) |
|
template<typename KEYCOMPARE = COMPARE, typename KEY = K> |
ConstIterator | Find (const KEY &key) const |
|
template<typename KEYCOMPARE = COMPARE, typename KEY = K> |
Iterator | FindFloor (const KEY &key) |
|
template<typename KEYCOMPARE = COMPARE, typename KEY = K> |
ConstIterator | FindFloor (const KEY &key) const |
|
template<typename KEYCOMPARE = COMPARE, typename KEY = K> |
Iterator | FindCeiling (const KEY &key) |
|
template<typename KEYCOMPARE = COMPARE, typename KEY = K> |
ConstIterator | FindCeiling (const KEY &key) const |
|
Int | GetOperationCountForSearch () const |
|
MAXON_ATTRIBUTE_FORCE_INLINE | SetBase (ARGS &&... args) |
|
SetImpl< ArraySet< T, true, DefaultCompare, BaseArraySelector<> > & > | ToSet () |
|
SetImpl< const ArraySet< T, true, DefaultCompare, BaseArraySelector<> > & > | ToSet () const |
|
MAXON_ATTRIBUTE_FORCE_INLINE | operator SetImpl< ArraySet< T, true, DefaultCompare, BaseArraySelector<> > & > () |
|
MAXON_ATTRIBUTE_FORCE_INLINE | operator SetImpl< const ArraySet< T, true, DefaultCompare, BaseArraySelector<> > & > () const |
|
template<typename... ARGS> |
MAXON_ATTRIBUTE_FORCE_INLINE | SetBase0 (ARGS &&... args) |
|
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< const VALUETYPE > | Append (typename ByValueParam< VALUETYPE >::type v) |
|
template<typename COLLECTION2 > |
Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE) |
|
template<typename COLLECTION2 > |
Result< void > | SubtractImpl (COLLECTION2 &&other, OverloadRank0) |
|
template<typename COLLECTION2 , typename COMPARE > |
Bool | IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const |
|
HashInt | GetHashCode () const |
|
UniqueHash | GetUniqueHashCode () const |
|
template<typename... ARGS> |
MAXON_ATTRIBUTE_FORCE_INLINE | Collection (ARGS &&... args) |
|
ResultOk< void > | VariadicAppend () |
|
template<typename V , typename... VALUES> |
Result< void > | VariadicAppend (V &&value, VALUES &&... rest) |
|
| operator ValueReceiver< const VALUETYPE & > () |
|
| operator ValueReceiver< VALUETYPE && > () |
|
| operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, VALUETYPE) |
|
DummyParamType & | type () |
|
template<typename FN > |
Result< Bool > | ForEach (FN &&callback) const |
|
template<typename FN > |
Result< Bool > | ForEach (FN &&callback) |
|
template<typename H = COLLECTION> |
H::Iterator | Find (typename ByValueParam< VALUETYPE >::type v) |
|
template<typename H = COLLECTION> |
H::ConstIterator | Find (typename ByValueParam< VALUETYPE >::type v) const |
|
Int | FindIndex (typename ByValueParam< VALUETYPE >::type v) const |
|
MAXON_ATTRIBUTE_FORCE_INLINE Bool | Contains (typename ByValueParam< VALUETYPE >::type v) const |
|
template<typename... ARGS> |
MAXON_ATTRIBUTE_FORCE_INLINE | BaseCollection (ARGS &&... args) |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator== (const COLLECTION2 &other) const |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator!= (const COLLECTION2 &other) const |
|
template<typename COMPARE = EqualityCompare, typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!STD_IS_REPLACEMENT(same, typename std::decay< COMPARE >::type, EQUALITY), Bool >::type | IsEqual (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE) |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Subtract (COLLECTION2 &&other) |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Intersect (const COLLECTION2 &other) |
|
template<typename COLLECTION2 > |
Bool | Intersects (const COLLECTION2 &other) const |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0) |
|
template<typename COLLECTION2 > |
Result< void > | AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0) |
|
template<typename COLLECTION2 > |
Result< void > | IntersectImpl (COLLECTION2 &&other, OverloadRank0) |
|
MAXON_ATTRIBUTE_FORCE_INLINE Bool | IsEmpty () const |
|
MAXON_ATTRIBUTE_FORCE_INLINE Bool | IsPopulated () const |
|
String | ToString (const FormatStatement *formatStatement=nullptr) const |
|
template<typename COLLECTION2 > |
MAXON_ATTRIBUTE_FORCE_INLINE Bool | ContainsAll (COLLECTION2 &&other) const |
|
template<typename COLLECTION2 > |
Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
|