|
| CFastArray () |
|
| CFastArray (const T *data, INDEXTYPE count) |
|
| CFastArray (const CFastArray &src) |
|
void | SetGrowPolicy (GrowPolicy val) |
|
GrowPolicy | GetGrowPolicy () |
|
void | SetMinCapacity (INDEXTYPE newCapacity) |
|
void | SetCapacity (INDEXTYPE newCapacity) |
|
void | SuspendShrink () |
|
void | OnRecycle () |
|
void | OnDrop () |
|
void | SetCount (INDEXTYPE newVal) |
|
void | AddCount (INDEXTYPE addLength) |
|
void | resize (INDEXTYPE sz) |
| for STL compatibility
|
|
INDEXTYPE | GetCapacity () const |
|
INDEXTYPE | GetCount () const |
|
INDEXTYPE | size () const |
| for STL compatibility
|
|
bool | IsEmpty () const |
|
void | Clear () |
|
void | ClearAndKeepCapacity () |
|
T_IN | ElementAt (INDEXTYPE index) const |
|
T & | ElementAt (INDEXTYPE index) |
|
T_IN | operator[] (INDEXTYPE index) const |
|
T & | operator[] (INDEXTYPE index) |
|
T * | GetData () |
|
const T * | GetData () const |
|
void | Add (T_IN value) |
|
void | Insert (INDEXTYPE indexAt, T_IN value) |
|
void | AddRange (const T *data, INDEXTYPE count) |
|
void | InsertRange (INDEXTYPE indexAt, const T *data, INDEXTYPE count) |
|
void | CopyRangeTo (CFastArray &dest, INDEXTYPE srcOffset, INDEXTYPE count) const |
|
void | CopyTo (CFastArray &dest) const |
|
void | CopyFrom (const CFastArray &src) |
|
void | CopyFrom (const T *from, INDEXTYPE fromCount) |
|
void | RemoveRange (INDEXTYPE index, INDEXTYPE count) |
|
void | RemoveAt (INDEXTYPE index) |
|
bool | RemoveOneByValue (T_IN value) |
|
CFastArray & | operator= (const CFastArray &src) |
|
INDEXTYPE | FindByValue (T_IN value) |
|
bool | Contains (T_IN value) |
|
bool | Equals (const CFastArray &rhs) const |
|
void | clear () |
| for STL compatibility
|
|
iterator | begin () |
|
iterator | end () |
|
const_iterator | begin () const |
|
const_iterator | end () const |
|
iterator | erase (iterator iter) |
|
T | PopBack () |
|
void | RemoveAndPullLast (intptr_t index) |
|
virtual void | DataBlock_Free (void *data) |
|
virtual void * | DataBlock_Alloc (size_t length) |
|
virtual void * | DataBlock_Realloc (void *oldPtr, size_t newLength) |
|
template<typename T, bool T_IN_REF = true, bool RAWTYPE = false, typename INDEXTYPE = intptr_t>
class Proud::CFastArray< T, T_IN_REF, RAWTYPE, INDEXTYPE >
Array class
Performance increase function for primitive type
- The performance that manages array increases when RAWTYPE=true due to array factors are regarded as primitive type such as int. (In order to maximize the performance, sometimes memcpy can be used internally.)
- However, only specific primitive types such as int, bool and byte can be used. It can be dangerous that the type with separate constructor, destructor and duplicator is used as array clause.
Major characteristics
- Does not perform auto memory shrink in order to minimize heap access In other words, capacity never decreases. Therefore, if the circumstances must consider the side-effects of using too much memory then this object must not be used.
- Internally, by using Fast heap, it is possible to decrease the load cuased by heap access. By default, this feature is off. But it can be changed by UseFastHeap.
- Can use the metohd names of List<> of .Net framework, STL.vector and CAtlArray. And provides interator class that acts as STL.vector.iterator
- Parameters
-
T | Clause type of array |
T_IN_REF | Set to true if you want the value to be passed by reference, or false for by value. Type of 8 or less of bytes such as int is passed faster if by value is selected. |
RAWTYPE | To check if the type is safe even if array element is processed as “raw memory copy”. int is safe but std.string is not safe. In case element type of array is not related to constructor, destructor and copy assignment operator, you can set it as “true”. If setting it as “true”, constructor, destructor and copy assignment will not be called for progression of construction, destruction and copy of array element that internally occurs when inserting & deleting & changing size. Therefore, processing speed will be improved. Default is “false”. |
INDEXTYPE | It is strongly recommended to use the maximum size of array and one of index types like int32,int64 and intPtr. Casting load between int32 and int64 should be considered, so using the appropriate one is recommended. For example, packet size should be int32 because it does not exceed 2GB and if it is only for local process, intPtr is recommended. int64 is appropriate when int32 cannot deal with accurate value like network statistics. |