-
首页
-
C4D R23.110 C++ SDK
MapInterface< K, V > Class Template Reference
#include <map.h>
详细描述
template<typename K, typename V>
class maxon::MapInterface< K, V >
MapInterface
is an interface which provides the usual map functions as virtual methods. Each standard map of the MAXON API can be represented as such an interface, so this allows to write non-template functions which nevertheless are able to deal with any kind of map.
If the function won't modify both the structure and values of the map, you should use a
const
MapInterface
with
const
values:
void
Func(
const
MapInterface<Int, const String>& map);
HashMap<Int, String> myMap;
Func(myMap);
// OK
ArrayMap<Int, String> myMap2;
Func(myMap2);
// OK
The access to the set happens via virtual methods, so there is an inevitable performance penalty, but this will be negligible for most use cases.
For a map which shall be modified, use WritableMapInterface as type of the function parameter instead.
-
Template Parameters
-
K
|
Type of keys of the map.
|
V
|
Type of values of the map.
|
公共成员函数
|
MAXON_METHOD
Int
|
GetCount
() const
|
MAXON_FUNCTION
Bool
|
IsEmpty
() const
|
MAXON_FUNCTION
Bool
|
IsPopulated
() const
|
MAXON_METHOD
ResultRef
< V >
|
InsertKey
(const K &key,
Bool
&created=
BoolLValue
())
|
MAXON_METHOD
ResultRef
< V >
|
InsertKey
(K &&key,
Bool
&created=
BoolLValue
())
|
template<typename VALUE >
|
MAXON_FUNCTION
ResultRef
< V >
|
Insert
(const K &key, VALUE &&value,
Bool
&created=
BoolLValue
())
|
template<typename VALUE >
|
MAXON_FUNCTION
ResultRef
< V >
|
Insert
(K &&key, VALUE &&value,
Bool
&created=
BoolLValue
())
|
MAXON_METHOD
V *
|
FindValue
(const K &key)
|
const
MAXON_METHOD
V *
|
FindValue
(const K &key) const
|
MAXON_METHOD
Result
<
Bool
>
|
Erase
(const K &key)
|
MAXON_METHOD
Iterator
|
Erase
(const
Iterator
&iterator)
|
MAXON_METHOD
void
|
重置
()
|
MAXON_METHOD
void
|
Flush
()
|
MAXON_METHOD
Result
< void >
|
CopyFrom
(const
MapInterface
&other)
|
MAXON_METHOD
Result
<
MapInterface
* >
|
Clone
(
Bool
cloneElements=true) const
|
const
MAXON_METHOD
DataType
&
|
GetKeyDataType
() const
|
const
MAXON_METHOD
DataType
&
|
GetValueDataType
() const
|
MAXON_METHOD
String
|
ToString
(const
FormatStatement
*formatStatement=nullptr) const
|
MAXON_METHOD
Int
|
GetMemorySize
() const
|
|
MAXON_ADD_TO_CONST_REFERENCE_CLASS
(
HashInt
GetHashCode
() const {
CriticalStop
("Not implemented.");return 0;};)
|
template<typename KT , typename VT >
|
MAXON_FUNCTION
Bool
|
HasType
() const
|
template<typename KT , typename VT >
|
MAXON_FUNCTION
void
|
AssertType
() const
|
template<typename KT , typename VT >
|
MapInterface
< KT, VT > &
|
AssertCast
()
|
template<typename KT , typename VT >
|
const
MapInterface
< KT, VT > &
|
AssertCast
() const
|
|
operator const MapInterface< K, const V > &
() const
|
|
operator const MapInterface< Generic, typename std::conditional< STD_IS_REPLACEMENT
(same, const V, const Generic)
|
const const Generic ::type &const
|
operator MapInterface< Generic, typename std::conditional< STD_IS_REPLACEMENT
(same, V, Generic)
|
const const Generic ::type &const volatile Generic ::type &
|
operator const NonConstMap< K, V > &
()
|
|
operator const NonConstMap< Generic, typename std::conditional< STD_IS_REPLACEMENT
(same, V, Generic)
|
ConstIterator
|
Begin
() const
|
Iterator
|
Begin
()
|
ConstIterator
|
End
() const
|
Iterator
|
End
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
MapBase0
(ARGS &&... args)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Bool
|
Contains
(typename
ByValueParam
< K >::type key) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
SFINAEHelper
<
Bool
, typename PAIR::KeyType >::type
|
Contains
(const PAIR &pair) const
|
ResultRef
< V >
|
Append
(const K &key)
|
SFINAEHelper
<
ResultRef
< V >, 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
|
Friends
|
template<typename MAP >
|
class
|
MapImpl
|
Member Typedef Documentation
◆
KeyType
◆
ValueType
◆
Iterator
◆
ConstIterator
成员函数文档编制
◆
MAXON_INTERFACE_SIMPLE_VIRTUAL()
◆
GetCount()
Gets the number of map entries.
-
返回
-
Number of map entries.
◆
IsEmpty()
@MAXON_ANNOTATION{default=true}
◆
IsPopulated()
◆
InsertKey()
[1/2]
Finds the value associated with the given key, or creates a corresponding entry if it doesn't exist yet. The value of a new entry has to be initialized afterwards (but its default constructor has already been invoked).
-
参数
-
[in]
|
key
|
Key of the value to find or create.
|
[out]
|
created
|
This will be set to true if a new entry has been created successfully, otherwise it will be set to false.
|
-
返回
-
Pointer to value for the given key, or nullptr if an entry didn't exist and allocation of a new entry failed.
◆
InsertKey()
[2/2]
Finds the value associated with the given key, or creates a corresponding entry if it doesn't exist yet. The value of a new entry has to be initialized afterwards (but its default constructor has already been invoked).
-
参数
-
[in]
|
key
|
Key of the entry to find or create. If a new entry is created, its key will be constructed by move-semantics if possible.
|
[out]
|
created
|
This will be set to true if a new entry has been created successfully, otherwise it will be set to false.
|
-
返回
-
Pointer to value for the given key, or nullptr if an entry didn't exist and allocation of a new entry failed.
◆
Insert()
[1/2]
Associates the given value with the given key. This adds a new entry for key if necessary, and then sets its value to the given value, whether the entry existed before or not.
-
参数
-
[in]
|
key
|
Key which shall map to the value.
|
[in]
|
value
|
Value to which the key shall map.
|
[out]
|
created
|
This will be set to true if a new entry has been created, otherwise it will be set to false.
|
-
返回
-
Pointer to value for the given key, or nullptr if an entry didn't exist and allocation of a new entry failed.
◆
Insert()
[2/2]
Associates the given value with the given key. This adds a new entry for key if necessary, and then sets its value to the given value, whether the entry existed before or not.
-
参数
-
[in]
|
key
|
Key of the entry to find or create. If a new entry is created, its key will be constructed by move-semantics if possible.
|
[in]
|
value
|
Value to which the key shall map.
|
[out]
|
created
|
This will be set to true if a new entry has been created, otherwise it will be set to false.
|
-
返回
-
Pointer to value for the given key, or nullptr if an entry didn't exist and allocation of a new entry failed.
◆
FindValue()
[1/2]
Finds the value associated with the given key in this map.
-
参数
-
[in]
|
key
|
Key to search for.
|
-
返回
-
Pointer to value for the given key, or nullptr if no entry exists for the key.
◆
FindValue()
[2/2]
Finds the value associated with the given key in this map.
-
参数
-
[in]
|
key
|
Key to search for.
|
-
返回
-
Pointer to value for the given key, or nullptr if no entry exists for the key.
◆
Erase()
[1/2]
Removes an entry with the given key from this map (if possible).
-
参数
-
[in]
|
key
|
Key of the map entry to be be removed.
|
-
返回
-
True if an entry was found and removed for #key, otherwise false or an error if a memory allocation failed.
◆
Erase()
[2/2]
Removes the element at
iterator
from this set. The returned iterator will point to the element behind the last removed element.
-
参数
-
[in]
|
iterator
|
Iterator pointing to the element to be removed.
|
-
返回
-
Iterator pointing to the element behind the removed element.
◆
Reset()
Deletes all elements (calls destructors and frees memory).
◆
Flush()
Deletes all elements, but doesn't free memory (calls destructors though).
◆
CopyFrom()
Sets this map to a copy of the given other map.
-
参数
-
-
返回
-
Success of operation.
◆
Clone()
Returns a clone of this map.
-
参数
-
[in]
|
cloneElements
|
True if also the elements shall be cloned, false otherwise (then just a new object sharing the same
MapInterface
implementation is created).
|
-
返回
-
Pointer to the new map object, nullptr if allocation or copying failed.
◆
GetKeyDataType()
Returns the data type of this map's keys. This may be nullptr if there is no
DataType
for the template parameter K.
-
返回
-
DataType
of the keys or nullptr.
◆
GetValueDataType()
Returns the data type of this map's values. This may be nullptr if there is no
DataType
for the template parameter V.
-
返回
-
DataType
of the values or nullptr.
◆
ToString()
-
参数
-
[in]
|
formatStatement
|
Nullptr or additional formatting instruction. Currently no additional formatting instructions are supported.
|
◆
GetMemorySize()
Calculates the memory usage for this map.
-
返回
-
Memory size in bytes.
◆
MAXON_ADD_TO_CONST_REFERENCE_CLASS()
◆
HasType()
◆
AssertType()
Issues a failed DebugAssert if the DataTypes of this map doesn't match KT/VT. For Generic, no check happens.
-
Template Parameters
-
KT
|
Type of keys to check.
|
VT
|
Type of values to check.
|
◆
AssertCast()
[1/2]
Casts this map to a map with keys of type KT and values of type VT. If one of they types doesn't match the actual data type of this map, a failed DebugAssert is issued. This function only makes sense when the original map uses Generic for at least one of its types.
-
Template Parameters
-
KT
|
Assumed key type of the map.
|
VT
|
Assumed value type of the map.
|
-
返回
-
This map, cast to a MapInterface<KT, VT>.
◆
AssertCast()
[2/2]
Casts this map to a map with keys of type KT and values of type VT. If one of they types doesn't match the actual data type of this map, a failed DebugAssert is issued. This function only makes sense when the original map uses Generic for at least one of its types.
-
Template Parameters
-
KT
|
Assumed key type of the map.
|
VT
|
Assumed value type of the map.
|
-
返回
-
This map, cast to a MapInterface<KT, VT>.
◆
operator const MapInterface< K, const V > &()
◆
operator const MapInterface< Generic, typename std::conditional< STD_IS_REPLACEMENT()
◆
operator MapInterface< Generic, typename std::conditional< STD_IS_REPLACEMENT()
◆
operator const NonConstMap< K, V > &()
const const Generic ::type& const volatile Generic ::type& operator const
NonConstMap
< K, V > &
|
(
|
|
)
|
|
◆
operator const NonConstMap< Generic, typename std::conditional< STD_IS_REPLACEMENT()
◆
Begin()
[1/2]
Returns an iterator pointing to the first map entry.
-
返回
-
Iterator for the first map entry (equal to
End()
if the map is empty).
◆
Begin()
[2/2]
Returns an iterator pointing to the first map entry.
-
返回
-
Iterator for the first map entry (equal to
End()
if the map is empty).
◆
End()
[1/2]
Returns an iterator pointing one behind the last map entry.
-
返回
-
Iterator for the map end, this is one behind the last map entry.
◆
End()
[2/2]
Returns an iterator pointing one behind the last map entry.
-
返回
-
Iterator for the map end, this is one behind the last map entry.
◆
IteratorInit()
[1/2]
◆
IteratorInit()
[2/2]
◆
IteratorInitMove()
[1/2]
◆
IteratorInitMove()
[2/2]
◆
IteratorFree()
[1/2]
◆
IteratorFree()
[2/2]
◆
IteratorIsEqual()
[1/2]
◆
IteratorIsEqual()
[2/2]
◆
IteratorInc()
[1/2]
◆
IteratorInc()
[2/2]
◆
IteratorGet()
[1/2]
◆
IteratorGet()
[2/2]
◆
Alloc()
[1/2]
◆
Alloc()
[2/2]
Friends And Related Function Documentation
◆
MapImpl
Member Data Documentation
◆
DummyReturnType
[1/3]
◆
DummyReturnType
[2/3]
const const Generic ::type& const volatile DummyReturnType
|
◆
DummyReturnType
[3/3]