#include <bursttriemap.h>
详细描述
template<typename T, Int GROUP_BITS = 4, Int BUCKET_SIZE = 16, BURSTTRIE_SORT SORT = BURSTTRIE_SORT::LINEAR_SEARCH, template< typename, typename > class POOL = PointerBurstTriePool>
class maxon::BurstTrieSet< T, GROUP_BITS, BUCKET_SIZE, SORT, POOL >
A
BurstTrieSet
is an implementation of a set using an underlying
BurstTrieMap
. Like
BurstTrieMap
, it only supports unsigned integral values. See
BurstTrieMap
for details about the internal structure and performance.
见
HashSet
for more examples on how to use sets in general.
-
Template Parameters
-
T
|
Type of elements of the set.
|
GROUP_BITS
|
Number of bits which shall be grouped to form an index into the children array of an inner node. This shouldn't exceed 4.
|
BUCKET_SIZE
|
Maximum size of a bucket of a leaf node. Reasonable values are between 4 and 40.
|
SORT
|
Mode for sorting of the buckets.
|
POOL
|
Memory pool for the nodes.
|
-
另请参阅
-
BurstTrieMap
-
$ref sets
公共成员函数
|
|
BurstTrieSet
()
|
|
BurstTrieSet
(
BurstTrieSet
&&
src
)
|
|
MAXON_OPERATOR_MOVE_ASSIGNMENT
(
BurstTrieSet
)
|
MapType
&
|
GetMap
()
|
const
MapType
&
|
GetMap
() const
|
Bool
|
Contains
(T value) const
|
void
|
Insert
() const
|
ResultMemT
<
Iterator
>
|
Insert
(T value,
Bool
&added=
BoolLValue
())
|
ResultRef
< const T >
|
InsertKey
(T value,
Bool
&added=
BoolLValue
())
|
ResultOk
<
Bool
>
|
Erase
(T value)
|
ConstIterator
|
Begin
() const
|
ConstIterator
|
End
() const
|
Iterator
|
Begin
()
|
Iterator
|
End
()
|
Iterator
|
Erase
(const
Iterator
&it)
|
Iterator
|
Find
(K key)
|
ConstIterator
|
Find
(K key) const
|
Int
|
GetCount
() const
|
Int
|
GetOperationCountForSearch
() const
|
ResultMem
|
SetCapacityHint
(
Int
,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
void
|
重置
()
|
void
|
Flush
()
|
Int
|
GetMemorySize
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
SetBase
(ARGS &&... args)
|
SetImpl
<
BurstTrieSet
< T, 4, 16,
BURSTTRIE_SORT::LINEAR_SEARCH
,
PointerBurstTriePool
> & >
|
ToSet
()
|
SetImpl
< const
BurstTrieSet
< T, 4, 16,
BURSTTRIE_SORT::LINEAR_SEARCH
,
PointerBurstTriePool
> & >
|
ToSet
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator SetImpl< BurstTrieSet< T, 4, 16, BURSTTRIE_SORT::LINEAR_SEARCH, PointerBurstTriePool > & >
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator SetImpl< const BurstTrieSet< T, 4, 16, BURSTTRIE_SORT::LINEAR_SEARCH, PointerBurstTriePool > & >
() 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
|
IsBurstTrieMap
= std::true_type
|
using
|
Bucket
=
BurstTrieBucket
< T,
UnitType
, BUCKET_SIZE >
|
using
|
节点
=
BurstTrieNode
< GROUP_BITS, typename
PointerBurstTriePool
<
Int
,
Int
>::
索引
>
|
using
|
Pool
=
PointerBurstTriePool
<
节点
,
Bucket
>
|
using
|
索引
= typename
Pool::Index
|
using
|
Super
=
MapBase
<
BurstTrieMap
< T,
UnitType
, GROUP_BITS, BUCKET_SIZE, SORT,
PointerBurstTriePool
>, T,
UnitType
,
Pool
,
DefaultCompare
>
|
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
=
BurstTrieMap
< T,
UnitType
, GROUP_BITS, BUCKET_SIZE, SORT,
PointerBurstTriePool
>
|
using
|
Super
=
BaseCollection
<
BurstTrieMap
< T,
UnitType
, GROUP_BITS, BUCKET_SIZE, SORT,
PointerBurstTriePool
>,
PointerBurstTriePool
<
BurstTrieNode
< GROUP_BITS,
PointerBurstTriePool
<
Int
,
Int
>::
索引
>,
BurstTrieBucket
< T,
UnitType
, BUCKET_SIZE > > >
|
using
|
KeyType
= T
|
using
|
ValueType
=
UnitType
|
using
|
IsCollection
= std::true_type
|
using
|
索引
= void *
|
|
BurstTrieMap
()
|
|
BurstTrieMap
(
Pool
&&a)
|
|
BurstTrieMap
(const
Pool
&a)
|
|
BurstTrieMap
(
BurstTrieMap
&&src)
|
|
MAXON_OPERATOR_MOVE_ASSIGNMENT
(
BurstTrieMap
)
|
|
~BurstTrieMap
()
|
SFINAEHelper
<
Result
< void >, typename std::remove_reference<
MAP
>::type::IsBurstTrieMap >::type
|
CopyFromImpl
(
MAP
&&src,
COLLECTION_RESIZE_FLAGS
resizeFlags,
OverloadRank1
)
|
void
|
重置
()
|
void
|
Flush
()
|
ResultMem
|
SetCapacityHint
(
Int
,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
Int
|
GetCount
() const
|
Int
|
GetOperationCountForSearch
() const
|
Int
|
GetDepth
() const
|
Int
|
GetMemorySize
() const
|
Iterator
|
Begin
()
|
ConstIterator
|
Begin
() const
|
Iterator
|
End
()
|
ConstIterator
|
End
() const
|
KeyIterator
|
GetKeys
()
|
ConstKeyIterator
|
GetKeys
() const
|
ValueIterator
|
GetValues
()
|
ConstValueIterator
|
GetValues
() const
|
ResultMemT
<
Iterator
>
|
InsertEntry
(T key,
Bool
&created=
BoolLValue
())
|
ResultMemT
<
Iterator
>
|
Insert
(T key, const
UnitType
&value,
Bool
&created=
BoolLValue
())
|
ResultMemT
<
Iterator
>
|
Insert
(T key,
UnitType
&&value,
Bool
&created=
BoolLValue
())
|
ResultRef
<
UnitType
>
|
InsertKey
(T key,
Bool
&created=
BoolLValue
())
|
const
UnitType
*
|
FindValue
(T key) const
|
UnitType
*
|
FindValue
(T key)
|
Iterator
|
Find
(T key)
|
ConstIterator
|
Find
(T key) const
|
Iterator
|
FindFloor
(T key)
|
ConstIterator
|
FindFloor
(T key) const
|
ResultOk
<
Bool
>
|
Erase
(T key)
|
IteratorTemplate< false, SUPER >
|
Erase
(const IteratorTemplate< false, SUPER > &position,
Int
eraseCnt=1)
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
MapBase
(ARGS &&... args)
|
MapImpl
<
BurstTrieMap
< T,
UnitType
, GROUP_BITS, BUCKET_SIZE, SORT,
PointerBurstTriePool
> & >
|
ToMap
()
|
MapImpl
< const
BurstTrieMap
< T,
UnitType
, GROUP_BITS, BUCKET_SIZE, SORT,
PointerBurstTriePool
> & >
|
ToMap
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator MapImpl< BurstTrieMap< T, UnitType, GROUP_BITS, BUCKET_SIZE, SORT, PointerBurstTriePool > & >
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator MapImpl< const BurstTrieMap< T, UnitType, GROUP_BITS, BUCKET_SIZE, SORT, PointerBurstTriePool > & >
() 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)
|
static void *
|
AllocNode
(
索引
&index)
|
static void *
|
AllocBucket
(
索引
&index)
|
static void
|
FreeNode
(
索引
i)
|
static void
|
FreeBucket
(
索引
i)
|
static
Bool
|
IsNode
(
索引
i)
|
static
BurstTrieNode
< GROUP_BITS,
PointerBurstTriePool
<
Int
,
Int
>::
索引
> *
|
GetNode
(
索引
i)
|
static
BurstTrieBucket
< T,
UnitType
, BUCKET_SIZE > *
|
GetBucket
(
索引
i)
|
static const
Int
|
GROUP_SIZE
|
static const
Int
|
GROUP_MASK
|
static const
Int
|
MAX_LEN
|
static const
COLLECTION_KIND
|
KIND
|