#include <hybridmap.h>
详细描述
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
.
见
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.
|
-
另请参阅
-
HybridMap
-
$ref sets
Public Types
|
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 >
|
添加
(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)
|
Additional Inherited Members
|
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
|
重置
()
|
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 >
|
添加
(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
|