-
首页
-
C4D R23.110 C++ SDK
PointerArray< T, MINCHUNKSIZE, ALLOCATOR > Class Template Reference
Data Structures
#include <pointerarray.h>
详细描述
template<typename T, Int MINCHUNKSIZE = BASEARRAY_DEFAULT_CHUNK_SIZE, typename ALLOCATOR = DefaultAllocator>
class maxon::PointerArray< T, MINCHUNKSIZE, ALLOCATOR >
Array
of pointers to objects. The array consists of pointers to objects of type T (instead of storing the objects directly like a
BaseArray
does). Internally each time you append or insert an element a new object of type T is allocated, constructed and the corresponding index of the array will point to it. Nonetheless this array has the same interface as a
BaseArray
except for
AppendPtr()
,
InsertPtr()
and
PopPtr()
which allow you to directly add or remove already existing objects. Like with all other arrays the destructor of the
PointerArray
will release memory for all objects that are still part of the array. If you want to use the objects yourself after they have been created by the
PointerArray
you have to take ownership of them by calling
PopPtr()
or use a BaseArray<T*> instead of a PointerArray<T>.
Please note that in a C++11 range based for loop you may not call a non-const method that modifies the range (e.g. Erase) - it does not work because the loop does not expect the range to change. Use the
Iterable::EraseIterator
in that case.
Performance characteristics:
Random
access to array elements is constant: O(1). Append or Pop (erase the last) an element is amortized constant: O(1) Insert or Erase an element is best case amortized constant (big elements) or in worst case linear (small elements): O(1) to O(n)
-
注意
-
: Do not rely on the characteristics to pick the right type of collection. Always profile!
-
Template Parameters
-
T
|
Type of the array elements.
|
MINCHUNKSIZE
|
The minimum number of elements upon array creation.
|
ALLOCATOR
|
Class
for memory allocation.
|
-
注意
-
Note that the array element class has special requirements regarding
copy and move constructors
.
-
另请参阅
-
$ref arrays
公共成员函数
|
|
PointerArray
()
|
|
PointerArray
(const ALLOCATOR &a)
|
|
~PointerArray
()
|
|
PointerArray
(
PointerArray
&&
src
)
|
|
MAXON_OPERATOR_MOVE_ASSIGNMENT
(
PointerArray
)
|
void
|
重置
()
|
void
|
Flush
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
Int
|
GetCount
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Int
|
GetCapacityCount
() const
|
const
MAXON_ATTRIBUTE_FORCE_INLINE
T &
|
operator[]
(
Int
idx) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
T &
|
operator[]
(
Int
idx)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultRef
< T >
|
Append
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultRef
< T >
|
Append
(const T &x)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultRef
< T >
|
Append
(T &&x)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultPtr
< T >
|
Append
(const
Block
< const T > &values)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultPtr
< T >
|
Append
(const std::initializer_list< T > &values)
|
ResultPtr
< T >
|
AppendPtr
(T *x)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultRef
< T >
|
Insert
(
Int
position)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultMemT
<
Iterator
>
|
Insert
(
Iterator
position)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultRef
< T >
|
Insert
(
Int
position, const T &x)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultMemT
<
Iterator
>
|
Insert
(
Iterator
position, const T &x)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultRef
< T >
|
Insert
(
Int
position, T &&x)
|
MAXON_ATTRIBUTE_FORCE_INLINE
ResultMemT
<
Iterator
>
|
Insert
(
Iterator
position, T &&x)
|
ResultPtr
< T >
|
InsertPtr
(
Int
position, T *x)
|
ResultPtr
< T >
|
Insert
(
Int
position, const
Block
< const T > &values)
|
ResultPtr
< T >
|
Insert
(
Int
position, const std::initializer_list< T > &values)
|
ResultMemT
<
Iterator
>
|
Insert
(
Iterator
position, const
Block
< const T > &values)
|
ResultMemT
<
Iterator
>
|
Insert
(
Iterator
position, const std::initializer_list< T > &values)
|
ResultPtr
< T >
|
Erase
(
Int
position,
Int
eraseCnt=1)
|
Iterator
|
Erase
(
Iterator
position,
Int
eraseCnt=1)
|
ResultPtr
< T >
|
ErasePtr
(
Int
position, T **dst)
|
ResultMem
|
SwapErase
(
Int
position,
Int
eraseCnt=1)
|
Iterator
|
SwapErase
(
Iterator
position,
Int
eraseCnt=1)
|
template<Bool STRIDED>
|
MAXON_ATTRIBUTE_FORCE_INLINE
Int
|
GetBlock
(
Int
position,
Block
< T, STRIDED > &block)
|
template<Bool STRIDED>
|
MAXON_ATTRIBUTE_FORCE_INLINE
Int
|
GetBlock
(
Int
position,
Block
< const T, STRIDED > &block) const
|
template<Bool STRIDED>
|
MAXON_ATTRIBUTE_FORCE_INLINE
Iterator
|
GetBlock
(
Iterator
position,
Block
< T, STRIDED > &block)
|
template<Bool STRIDED>
|
MAXON_ATTRIBUTE_FORCE_INLINE
Iterator
|
GetBlock
(
Iterator
position,
Block
< const T, STRIDED > &block) const
|
const
MAXON_ATTRIBUTE_FORCE_INLINE
T *
|
GetFirst
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
T *
|
GetFirst
()
|
const
MAXON_ATTRIBUTE_FORCE_INLINE
T *
|
GetLast
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
T *
|
GetLast
()
|
ResultMem
|
SetCapacityHint
(
Int
requestedCapacity,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
ResultMem
|
Resize
(
Int
newCnt,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::DEFAULT
)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Bool
|
Pop
(T *dst=nullptr)
|
Bool
|
PopPtr
(T **dst)
|
Int
|
GetIndex
(const T &x) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
void
|
Swap
(
Iterator
a,
Iterator
b)
|
Int
|
GetMemorySize
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
ConstIterator
|
Begin
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Iterator
|
Begin
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
ConstIterator
|
End
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Iterator
|
End
()
|
Block
< T * >
|
Disconnect
()
|
ALLOCATOR &
|
GetAllocator
()
|
Array
&
|
GetUnderlyingArray
()
|
const
Array
&
|
GetUnderlyingArray
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
ArrayBase
(ARGS &&... args)
|
ArrayImpl
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
> & >
|
ToArray
()
|
ArrayImpl
< const
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
> & >
|
ToArray
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator ArrayImpl< PointerArray< T, BASEARRAY_DEFAULT_CHUNK_SIZE, DefaultAllocator > & >
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator ArrayImpl< const PointerArray< T, BASEARRAY_DEFAULT_CHUNK_SIZE, DefaultAllocator > & >
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
ArrayBase0
(ARGS &&... args)
|
Bool
|
IsValidIndex
(
Int
index) const
|
Result
< void >
|
CheckValidIndex
(
Int
index) const
|
Int
|
FindIndex
(typename
ByValueParam
< T >::
type
v,
Int
start) const
|
Int
|
FindLastIndex
(typename
ByValueParam
< T >::
type
v) const
|
Int
|
FindLastIndex
(typename
ByValueParam
< T >::
type
v,
Int
start) const
|
Bool
|
EraseFirst
(typename
ByValueParam
< T >::
type
v)
|
Int
|
EraseAll
(typename
ByValueParam
< T >::
type
v)
|
Result
< void >
|
AppendAllImpl
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags,
Bool
overwrite,
OverloadRank0
)
|
Result
< void >
|
InsertAll
(
Int
index, COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
Result
< void >
|
添加
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
Result
< void >
|
SubtractImpl
(COLLECTION2 &&other,
OverloadRank0
)
|
Bool
|
IsEqualImpl
(const COLLECTION2 &other, COMPARE &&cmp,
OverloadRank0
) const
|
HashInt
|
GetHashCode
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
AutoIterator
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
> >
|
切片
(
Int
start)
|
MAXON_ATTRIBUTE_FORCE_INLINE
AutoIterator
< const
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
> >
|
切片
(
Int
start) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
AutoIterator
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
> >
|
切片
(
Int
start,
Int
end)
|
MAXON_ATTRIBUTE_FORCE_INLINE
AutoIterator
< const
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
> >
|
切片
(
Int
start,
Int
end) const
|
BlockIterator
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
>, T, false, false >
|
GetBlocks
()
|
BlockIterator
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
>, T, true, false >
|
GetBlocks
() const
|
BlockIterator
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
>, T, false, true >
|
GetStridedBlocks
()
|
BlockIterator
<
PointerArray
< T, BASEARRAY_DEFAULT_CHUNK_SIZE,
DefaultAllocator
>, T, true, true >
|
GetStridedBlocks
() 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
|
Member Typedef Documentation
◆
Array
◆
AllocatorType
◆
Iterator
◆
ConstIterator
构造函数 & 析构函数文档编制
◆
PointerArray()
[1/3]
Default constructor. Creates an empty arry.
◆
PointerArray()
[2/3]
This constructor has to be used if an array should use a custom allocator with member variables.
◆
~PointerArray()
Destructs the array with all its elements.
◆
PointerArray()
[3/3]
Move constructor.
成员函数文档编制
◆
MAXON_DISALLOW_COPY_AND_ASSIGN()
MAXON_DISALLOW_COPY_AND_ASSIGN
|
(
|
PointerArray
< T, MINCHUNKSIZE, ALLOCATOR >
|
|
)
|
|
|
private
|
◆
MAXON_OPERATOR_MOVE_ASSIGNMENT()
MAXON_OPERATOR_MOVE_ASSIGNMENT
|
(
|
PointerArray
< T, MINCHUNKSIZE, ALLOCATOR >
|
|
)
|
|
Move assignment operator.
◆
Reset()
Deletes all elements (calls destructors and frees memory).
◆
Flush()
Deletes all elements, but doesn't free memory (calls destructors though).
◆
GetCount()
Gets the number of array elements.
-
返回
-
Number of array elements.
◆
GetCapacityCount()
Gets the number of elements for which memory has been allocated (for a
PointerArray
this is equal to
GetCount()
).
-
返回
-
Number of array elements for which memory has been allocated.
◆
operator[]()
[1/2]
Array
(subscript) operator for const objects.
-
参数
-
[in]
|
idx
|
Element index (if it's out of bounds you will get an error in debug code only, otherwise it will crash).
|
-
返回
-
Array
element.
◆
operator[]()
[2/2]
Array
(subscript) operator for non-const objects.
-
参数
-
[in]
|
idx
|
Element index (if it's out of bounds you will get an error in debug code only, otherwise it will crash).
|
-
返回
-
Array
element.
◆
Append()
[1/5]
Adds a new element at the end of the array.
-
返回
-
Element reference or OutOfMemoryError if the allocation failed.
◆
Append()
[2/5]
Adds a new element at the end of the array and initializes it with a copy of x.
-
参数
-
[in]
|
x
|
Value to be copied.
|
-
返回
-
Element reference or OutOfMemoryError if the allocation failed.
◆
Append()
[3/5]
Adds a new element at the end of the array and moves the content of x to it.
-
参数
-
[in]
|
x
|
Value to be moved.
|
-
返回
-
Element reference or OutOfMemoryError if the allocation failed.
◆
Append()
[4/5]
Appends new elements at the end of the array.
-
参数
-
[in]
|
values
|
Block
with values to be copied. If the block points to nullptr, only its count is used, and you have to call the constructor of the new elements manually.
|
-
返回
-
Element pointer or OutOfMemoryError if the allocation failed.
◆
Append()
[5/5]
Appends new elements at the end of the array.
-
参数
-
[in]
|
values
|
Initializer list with values to be copied.
|
-
返回
-
Element pointer or OutOfMemoryError if the allocation failed.
◆
AppendPtr()
PointerArray
specific: Adds a pointer to the new element at the end of the array.
-
参数
-
[in]
|
x
|
Pointer to new element (
PointerArray
will take ownership of it).
|
-
返回
-
Element pointer or nullptr (in this case x is still valid).
◆
Insert()
[1/10]
Inserts a new default element at index position.
-
参数
-
[in]
|
position
|
Insert index (the array size will increase and the existing elements are moved).
|
-
返回
-
Element reference or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[2/10]
Inserts a new default element at iterator position.
-
参数
-
[in]
|
position
|
Insert position.
|
-
返回
-
Iterator for the new element or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[3/10]
Inserts a new element at index position and initializes it with a copy of x.
-
参数
-
[in]
|
position
|
Insert index (the array size will increase and the existing elements are moved).
|
[in]
|
x
|
Value to be copied.
|
-
返回
-
Element reference or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[4/10]
Inserts a new element at iterator position and initializes it with a copy of x.
-
参数
-
[in]
|
position
|
Insert position.
|
[in]
|
x
|
Value to be copied.
|
-
返回
-
Iterator for the new element or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[5/10]
Inserts a new element at index position and moves the content of x to it.
-
参数
-
[in]
|
position
|
Insert index (the array size will increase and the existing elements are moved).
|
[in]
|
x
|
Value to be moved.
|
-
返回
-
Element reference or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[6/10]
Inserts a new element at iterator position and moves the content of x to it.
-
参数
-
[in]
|
position
|
Insert position.
|
[in]
|
x
|
Value to be moved.
|
-
返回
-
Iterator for the new element or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
InsertPtr()
PointerArray
specific: Inserts a pointer to a new element at index position.
-
参数
-
[in]
|
position
|
Insert index (the array size will increase and the existing elements are moved).
|
[in]
|
x
|
Pointer to new element (
PointerArray
will take ownership of it).
|
-
返回
-
Element pointer or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[7/10]
Inserts new elements at index position (the pointers to all elements from
position
on are moved by the the count of
values
).
-
参数
-
[in]
|
position
|
Insert index (the array size will increase and the existing elements are moved).
|
[in]
|
values
|
Block
with values to be copied. If the block points to nullptr, only its count is used, and you have to call the constructor of the new elements manually.
|
-
返回
-
Element pointer or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[8/10]
ResultPtr
<T> Insert
|
(
|
Int
|
position
,
|
|
|
const std::initializer_list< T > &
|
values
|
|
)
|
|
|
Inserts new elements at index position (all elements from
position
on are moved by the the count of
values
).
-
参数
-
[in]
|
position
|
Insert index (the array size will increase and the existing elements are moved).
|
[in]
|
values
|
Initializer list with values to be copied.
|
-
返回
-
Element pointer or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[9/10]
Inserts new elements at iterator position (all elements from
position
on are moved by the the count of
values
).
-
参数
-
[in]
|
position
|
Insert position.
|
[in]
|
values
|
Block
with values to be copied. If the block points to nullptr, only its count is used, and you have to call the constructor of the new elements manually.
|
-
返回
-
Iterator for the new element or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Insert()
[10/10]
Inserts new elements at iterator position (all elements from
position
on are moved by the the count of
values
).
-
参数
-
[in]
|
position
|
Insert position.
|
[in]
|
values
|
Initializer list with values to be copied.
|
-
返回
-
Iterator for the new element or OutOfMemoryError if the allocation failed (or position is out of boundaries).
◆
Erase()
[1/2]
Erases (removes and deletes) elements.
-
参数
-
[in]
|
position
|
Erase index (
Erase()
will fail if out of bounds and return nullptr).
|
[in]
|
eraseCnt
|
Number of elements to be erased. If eraseCnt is invalid (higher than allowed or negative) a nullptr will be returned.
|
-
返回
-
Pointer to the element that is now at position. If position equals the number of elements after
Erase()
a valid pointer is returned but you are not allowed to access it. OutOfMemoryError is only returned on failure (position was out of bounds).
◆
Erase()
[2/2]
Erases (removes and deletes) elements.
-
参数
-
[in]
|
position
|
Erase position.
|
[in]
|
eraseCnt
|
Number of elements to be erased. If eraseCnt is invalid (higher than allowed or negative) an invalid iterator will be returned.
|
-
返回
-
Iterator for the element that is now at position (its operator
Bool()
will return false if something failed).
◆
ErasePtr()
Extracts a single element from the list and returns its pointer. The caller takes ownership of the element.
-
参数
-
[in]
|
position
|
Erase index (
Erase()
will fail if out of bounds and return nullptr).
|
[in,out]
|
dst
|
Used to return pointer to the erased element (must not be null).
|
-
返回
-
Pointer to the element that is now at position. If position equals the that of the element after
Erase()
, a valid pointer is returned but you are not allowed to access it. A nullptr is only returned on failure (position was out of bounds).
◆
SwapErase()
[1/2]
Erases elements within the array and moves elements from the end to the erased gap. This is generally faster than
Erase()
because at most eraseCnt elements have to be moved, but it changes the order of elements.
-
参数
-
[in]
|
position
|
Erase index (
SwapErase()
will fail if out of bounds and return nullptr).
|
[in]
|
eraseCnt
|
Number of elements to be erased. If eraseCnt is invalid (higher than allowed or negative) false will be returned.
|
-
返回
-
False if position was out of bounds.
◆
SwapErase()
[2/2]
Erases elements within the array and moves elements from the end to the erased gap. This is generally faster than
Erase()
because at most eraseCnt elements have to be moved, but it changes the order of elements.
-
参数
-
[in]
|
position
|
Erase position.
|
[in]
|
eraseCnt
|
Number of elements to be erased. If eraseCnt is invalid (higher than allowed or negative) an invalid iterator will be returned.
|
-
返回
-
Iterator for the element that is now at position (its operator
Bool()
will return false if something failed).
◆
GetBlock()
[1/4]
Determines a contiguous block of array elements which contains the element at
index
. For a
BaseArray
, this yields the whole array as a block.
-
参数
-
[in]
|
position
|
Element index.
|
[out]
|
block
|
Block
which contains the element at
index
.
|
-
返回
-
Start index of the block. The requested element can be found within the block at
index
- start index.
◆
GetBlock()
[2/4]
Determines a contiguous block of array elements which contains the element at
position
. For a
BaseArray
, this yields the whole array as a block.
-
参数
-
[in]
|
position
|
Element index.
|
[out]
|
block
|
Block
which contains the element at
position
.
|
-
返回
-
Start index of the block. The requested element can be found within the block at
position
- start index.
◆
GetBlock()
[3/4]
Determines a contiguous block of array elements which contains the element at
position
. For a
BaseArray
, this yields the whole array as a block.
-
参数
-
[in]
|
position
|
Element position.
|
[out]
|
block
|
Block
which contains the element at
position
.
|
-
返回
-
Start iterator of the block. The requested element can be found within the block at index
position
- start iterator.
◆
GetBlock()
[4/4]
Determines a contiguous block of array elements which contains the element at
position
. For a
BaseArray
, this yields the whole array as a block.
-
参数
-
[in]
|
position
|
Element position.
|
[out]
|
block
|
Block
which contains the element at
index
.
|
-
返回
-
Start iterator of the block. The requested element can be found within the block at index
position
- start iterator.
◆
GetFirst()
[1/2]
Returns the first element of the array.
-
注意
-
The
PointerArray
uses a separate memory blocks for each element. You must not and cannot use the pointer returned by
GetFirst()
to access the array elements like a continous block.
-
返回
-
Pointer to the first element (nullptr if the array is empty).
◆
GetFirst()
[2/2]
Returns the first element of the array.
-
注意
-
The
PointerArray
uses a separate memory blocks for each element. You must not and cannot use the pointer returned by
GetFirst()
to access the array elements like a continous block.
-
返回
-
Pointer to the first element (nullptr if the array is empty).
◆
GetLast()
[1/2]
Returns the last element of the array.
-
返回
-
Pointer to the last element (nullptr if the array is empty).
◆
GetLast()
[2/2]
Returns the last element of the array.
-
返回
-
Pointer to the last element (nullptr if the array is empty).
◆
SetCapacityHint()
Prepares the internal buffer(s) to hold at least the given number of elements with as few further memory allocations as possible.
-
注意
-
This is just a hint. It does not guarantee that the collection will be able to store the number of indicated elements.
-
参数
-
[in]
|
requestedCapacity
|
The desired internal capacity.
|
[in]
|
resizeFlags
|
If ON_GROW_FIT_TO_SIZE is set, the collection will use only as much memory as needed to hold the data.
|
-
返回
-
False if allocation failed.
◆
Resize()
Resizes the array to contain newCnt elements. If newCnt is smaller than
GetCount()
all extra elements are being deleted. If it is greater the array is expanded and the default constructor is called for new elements.
-
参数
-
[in]
|
newCnt
|
New array size.
|
[in]
|
resizeFlags
|
See COLLECTION_RESIZE_FLAGS (flags other than ON_GROW_UNINITIALIZED/POD_UNINITIALIZED result in default behaviour).
|
-
返回
-
False if allocation failed.
◆
Pop()
Deletes the last element.
-
参数
-
[out]
|
dst
|
Nullptr or pointer to return value.
|
-
返回
-
True if there was at least one element.
◆
PopPtr()
PointerArray
specific: Removes the last element and returns the pointer.
-
参数
-
[out]
|
dst
|
Used to return pointer to the last element (must not be null), the caller will take ownership of the element.
|
-
返回
-
True if successful.
◆
GetIndex()
Int
GetIndex
|
(
|
const T &
|
x
|
)
|
const
|
Gets the index of the element. The element must be part of the array, otherwise (e.g. if x is a copy of an array element) InvalidArrayIndex will be returned. This is quite slow because
GetIndex()
has to iterate over the array.
-
返回
-
Index of element or InvalidArrayIndex (not element of this).
◆
AppendAllImpl()
Specialization of AppendAllImpl, used by
BaseCollection::AppendAll
.
◆
Swap()
Swaps elements a and b (just the pointers are swapped, this is more efficient than global Swap(array[a], array[b]).
-
参数
-
[in]
|
a
|
Position of element to be swapped.
|
[in]
|
b
|
Position of element to be swapped.
|
◆
GetMemorySize()
Int
GetMemorySize
|
(
|
|
)
|
const
|
Calculates the memory usage for this array. The array element class must have a public member GetMemorySize that returns an element's size.
-
返回
-
Memory size in bytes.
◆
Begin()
[1/2]
Gets an iterator for the first element. When you modify the array
Begin()
will change, it is not a constant value.
-
返回
-
Iterator for the first element (equal to
End()
if the array is empty).
◆
Begin()
[2/2]
Gets an iterator for the first element. When you modify the array
Begin()
will change, it is not a constant value.
-
返回
-
Iterator for the first element (equal to
End()
if the array is empty).
◆
End()
[1/2]
Gets an iterator for the end (
End()
- 1 is the last element if the array is not empty). When you modify the array
End()
will change, it is not a constant value.
-
返回
-
Iterator for the array end (points behind the last element).
◆
End()
[2/2]
Gets an iterator for the end (
End()
- 1 is the last element if the array is not empty). When you modify the array
End()
will change, it is not a constant value.
-
返回
-
Iterator for the array end (points behind the last element).
◆
Disconnect()
Block
<T*> Disconnect
|
(
|
|
)
|
|
Disconnects the array's memory buffer and returns it as a block. Afterwards the array is in the same state as directly after its construction.
-
返回
-
The buffer consisting of pointers to elements of type T.
-
注意
-
The memory needs to be freed with the allocator that the array is using.
◆
GetAllocator()
ALLOCATOR& GetAllocator
|
(
|
|
)
|
|
Returns the allocator as reference. Typically this is used by the arrays and other base classes when multiple of them are "stiched" together as one big object all shall use one main allocator.
-
返回
-
Allocator reference.
◆
GetUnderlyingArray()
[1/2]
Array
& GetUnderlyingArray
|
(
|
|
)
|
|
Returns the underlying array which stores the pointers to the elements.
-
返回
-
Array
with pointers.
◆
GetUnderlyingArray()
[2/2]
const
Array
& GetUnderlyingArray
|
(
|
|
)
|
const
|
Returns the underlying array which stores the pointers to the elements.
-
返回
-
Array
with pointers.
◆
Alloc()
◆
AllocPointers()
T** AllocPointers
|
(
|
Int
|
cnt
|
)
|
|
|
private
|
◆
Free()
Member Data Documentation
◆
_ptr