template<typename T, typename SMALL, typename LARGE, Int THRESHOLD, Int REVERSE_THRESHOLD>
class maxon::HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD >
A HybridSet is an implementation of a set using an underlying HybridMap.
See HashSet for more examples on how to use sets in general.
- Template Parameters
-
| T | Type of elements of the set. |
| SMALL | A map selector template to choose the map implementation to use for a small number of entries. |
| LARGE | A map selector template to choose the map implementation to use for a large number of entries. |
| THRESHOLD | When the number of entries reaches THRESHOLD, HybridMap switches to the LARGE implementation. |
| REVERSE_THRESHOLD | When the number of entries falls below REVERSE_THRESHOLD, HybridMap switches back to the SMALL implementation. If this is negative, this will never happen. |
- See also
- HybridMap
-
$ref sets
|
| using | MapType = HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > |
| |
| using | Super = SetBase< HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD >, T, Protected< MapType >, DefaultCompare > |
| |
| using | IsHybridMap = std::true_type |
| |
| using | IsHybridSet = std::true_type |
| |
| using | Iterator = typename Super::KeyIterator |
| |
| using | ConstIterator = typename Super::ConstKeyIterator |
| |
| using | SetType = HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > |
| |
| using | Super = BaseCollection< HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD >, Protected< HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > > > |
| |
| using | ValueType = T |
| |
| using | IsCollection = std::true_type |
| |
|
| | HybridSet () |
| |
| | HybridSet (HybridSet &&src) |
| |
| | MAXON_OPERATOR_MOVE_ASSIGNMENT (HybridSet) |
| |
| MapType & | GetMap () |
| |
| const MapType & | GetMap () const |
| |
| Bool | Contains (typename ByValueParam< T >::type value) const |
| |
| void | Insert () 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()) |
| |
| Result< Bool > | Erase (const T &value) |
| |
| ConstIterator | Begin () const |
| |
| ConstIterator | End () const |
| |
| Iterator | Begin () |
| |
| Iterator | End () |
| |
| Iterator | Erase (const Iterator &it) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | SetBase (ARGS &&... args) |
| |
| SetImpl< HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > | ToSet () |
| |
| SetImpl< const HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > | ToSet () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator SetImpl< HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > () |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator SetImpl< const HybridSet< T, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | SetBase0 (ARGS &&... args) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< const T > | Append (typename ByValueParam< T >::type v) |
| |
| Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE) |
| |
| Result< void > | SubtractImpl (COLLECTION2 &&other, OverloadRank0) |
| |
| Bool | IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const |
| |
| HashInt | GetHashCode () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | Collection (ARGS &&... args) |
| |
| ResultOk< void > | VariadicAppend () |
| |
| Result< void > | VariadicAppend (V &&value, VALUES &&... rest) |
| |
| | operator ValueReceiver< const T & > () |
| |
| | operator ValueReceiver< T && > () |
| |
| | operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, T) |
| |
| DummyParamType & | type () |
| |
| Result< Bool > | ForEach (FN &&callback) const |
| |
| Result< Bool > | ForEach (FN &&callback) |
| |
| H::Iterator | Find (typename ByValueParam< T >::type v) |
| |
| H::ConstIterator | Find (typename ByValueParam< T >::type v) const |
| |
| Int | FindIndex (typename ByValueParam< T >::type v) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | Contains (typename ByValueParam< T >::type v) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | BaseCollection (ARGS &&... args) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator== (const COLLECTION2 &other) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator!= (const COLLECTION2 &other) const |
| |
| 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 |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Subtract (COLLECTION2 &&other) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Intersect (const COLLECTION2 &other) |
| |
| Bool | Intersects (const COLLECTION2 &other) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0) |
| |
| Result< void > | AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0) |
| |
| 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 |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | ContainsAll (COLLECTION2 &&other) const |
| |
| Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
| |
| | __attribute__ ((always_inline)) explicit Protected(ARGS &&... args) |
| |
|
| static const T & | GetMapKey (const T &key) |
| |
| static const COLLECTION_KIND | KIND |
| |
| using | SmallType = typename SMALL::template Type< T, UnitType > |
| |
| using | LargeType = typename LARGE::template Type< T, UnitType > |
| |
| using | IsHybridMap = std::true_type |
| |
| using | Iterator = IteratorTemplate< false, EntryIteratorBase > |
| |
| using | ConstIterator = IteratorTemplate< true, EntryIteratorBase > |
| |
| using | KeyIterator = IteratorTemplate< false, KeyIteratorBase > |
| |
| using | ConstKeyIterator = IteratorTemplate< true, KeyIteratorBase > |
| |
| using | ValueIterator = IteratorTemplate< false, ValueIteratorBase > |
| |
| using | ConstValueIterator = IteratorTemplate< true, ValueIteratorBase > |
| |
| using | MapType = HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > |
| |
| using | Super = BaseCollection< HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD >, EmptyClass > |
| |
| using | KeyType = T |
| |
| using | ValueType = UnitType |
| |
| using | IsCollection = std::true_type |
| |
| SmallType & | GetSmall () |
| |
| const SmallType & | GetSmall () const |
| |
| LargeType & | GetLarge () |
| |
| const LargeType & | GetLarge () const |
| |
| Iterator | Begin () |
| |
| ConstIterator | Begin () const |
| |
| Iterator | End () |
| |
| ConstIterator | End () const |
| |
| KeyIterator | GetKeys () |
| |
| ConstKeyIterator | GetKeys () const |
| |
| ValueIterator | GetValues () |
| |
| ConstValueIterator | GetValues () const |
| |
| | HybridMap () |
| |
| | HybridMap (HybridMap &&src) |
| |
| | ~HybridMap () |
| |
| | MAXON_OPERATOR_MOVE_ASSIGNMENT (HybridMap) |
| |
| Result< void > | CopyFromImpl (MAP &&src, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0) |
| |
| SFINAEHelper< Result< void >, typename std::remove_reference< MAP >::type::IsHybridMap >::type | CopyFromImpl (MAP &&src, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank1) |
| |
| void | Flush () |
| |
| void | Reset () |
| |
| Int | GetCount () const |
| |
| Int | GetOperationCountForSearch () const |
| |
| Int | GetMemorySize () const |
| |
| ResultMem | SetCapacityHint (Int capacity, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| ResultRef< UnitType > | InsertKey (const T &key, Bool &created=BoolLValue()) |
| |
| ResultRef< UnitType > | InsertKey (T &&key, Bool &created=BoolLValue()) |
| |
| ResultMemT< Iterator > | InsertEntry (const T &key, Bool &created=BoolLValue()) |
| |
| ResultMemT< Iterator > | InsertEntry (T &&key, Bool &created=BoolLValue()) |
| |
| ResultMemT< Iterator > | Insert (const T &key, const UnitType &value, Bool &created=BoolLValue()) |
| |
| ResultMemT< Iterator > | Insert (T &&key, const UnitType &value, Bool &created=BoolLValue()) |
| |
| ResultMemT< Iterator > | Insert (const T &key, UnitType &&value, Bool &created=BoolLValue()) |
| |
| ResultMemT< Iterator > | Insert (T &&key, UnitType &&value, Bool &created=BoolLValue()) |
| |
| const UnitType * | FindValue (const T &key) const |
| |
| UnitType * | FindValue (const T &key) |
| |
| Iterator | Find (const T &key) |
| |
| ConstIterator | Find (const T &key) const |
| |
| Iterator | FindFloor (const T &key) |
| |
| ConstIterator | FindFloor (const T &key) const |
| |
| Result< Bool > | Erase (const T &key) |
| |
| IteratorTemplate< false, SUPER > | Erase (const IteratorTemplate< false, SUPER > &position) |
| |
| Result< void > | UseLargeMap () |
| |
| Result< void > | UseSmallMap () |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | MapBase (ARGS &&... args) |
| |
| MapImpl< HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > | ToMap () |
| |
| MapImpl< const HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > | ToMap () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator MapImpl< HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > () |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator MapImpl< const HybridMap< T, UnitType, SMALL, LARGE, THRESHOLD, REVERSE_THRESHOLD > & > () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | MapBase0 (ARGS &&... args) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | Contains (typename ByValueParam< T >::type key) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE SFINAEHelper< Bool, typename PAIR::KeyType >::type | Contains (const PAIR &pair) const |
| |
| ResultRef< UnitType > | Append (const T &key) |
| |
| SFINAEHelper< ResultRef< UnitType >, typename PAIR::KeyType >::type | Append (const PAIR &pair) |
| |
| Result< void > | Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| Result< void > | AppendAllInverse (COLLECTION2 &&other) |
| |
| Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
| |
| Result< void > | SubtractImpl (COLLECTION2 &&other, OverloadRank0) |
| |
| Bool | IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const |
| |
| HashInt | GetHashCode () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | BaseCollection (ARGS &&... args) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator== (const COLLECTION2 &other) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator!= (const COLLECTION2 &other) const |
| |
| 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 |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Subtract (COLLECTION2 &&other) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Intersect (const COLLECTION2 &other) |
| |
| Bool | Intersects (const COLLECTION2 &other) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0) |
| |
| Result< void > | AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0) |
| |
| 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 |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | ContainsAll (COLLECTION2 &&other) const |
| |
| Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
| |
| static const T & | GetMapKey (const T &key) |
| |
| static const T & | GetMapKey (const PAIR &pair) |
| |
| Bool | _small |
| |
| std::aligned_union2< 0, SmallType, LargeType >::type | _union [1] |
| |
| static const COLLECTION_KIND | KIND |
| |