Loading...
Searching...
No Matches
irr::core::array< T, TAlloc > Class Template Reference

Self reallocating template array (like stl vector) with additional features. More...

`#include <irrArray.h>`

## Public Member Functions

| array ()
| Default constructor for empty array.
| array (const array< T, TAlloc > &other)
| Copy constructor.
| array (u32 start_count)
| Constructs an array and allocates an initial chunk of memory.
| ~array ()
| Destructor.
u32 | allocated_size () const
| Get amount of memory allocated.
s32 | binary_search (const T &element)
| Performs a binary search for an element, returns -1 if not found.
s32 | binary_search (const T &element) const
| Performs a binary search for an element if possible, returns -1 if not found.
s32 | binary_search (const T &element, s32 left, s32 right) const
| Performs a binary search for an element, returns -1 if not found.
s32 | binary_search_multi (const T &element, s32 &last)
void | clear ()
| Clears the array and deletes all allocated memory.
const T * | const_pointer () const
| Gets a const pointer to the array.
bool | empty () const
| Check if array is empty.
void | erase (u32 index)
| Erases an element from the array.
void | erase (u32 index, s32 count)
| Erases some elements from the array.
T & | getLast ()
| Gets last element.
const T & | getLast () const
| Gets last element.
void | insert (const T &element, u32 index=0)
| Insert item into array at specified position.
s32 | linear_reverse_search (const T &element) const
| Finds an element in linear time, which is very slow.
s32 | linear_search (const T &element) const
| Finds an element in linear time, which is very slow.
bool | operator!= (const array< T, TAlloc > &other) const
| Inequality operator.
const array< T, TAlloc > & | operator= (const array< T, TAlloc > &other)
| Assignment operator.
bool | operator== (const array< T, TAlloc > &other) const
| Equality operator.
T & | operator[] (u32 index)
| Direct access operator.
const T & | operator[] (u32 index) const
| Direct const access operator.
T * | pointer ()
| Gets a pointer to the array.
void | push_back (const T &element)
| Adds an element at back of array.
void | push_front (const T &element)
| Adds an element at the front of the array.
void | reallocate (u32 new_size, bool canShrink=true)
| Reallocates the array, make it bigger or smaller.
void | set_free_when_destroyed (bool f)
| Sets if the array should delete the memory it uses upon destruction.
void | set_pointer (T *newPointer, u32 size, bool _is_sorted=false, bool _free_when_destroyed=true)
| Sets pointer to new array, using this as new workspace.
void | set_sorted (bool _is_sorted)
| Sets if the array is sorted.
void | set_used (u32 usedNow)
| Sets the size of the array and allocates new elements if necessary.
void | setAllocStrategy (eAllocStrategy newStrategy=ALLOC_STRATEGY_DOUBLE)
| set a new allocation strategy
u32 | size () const
| Get number of occupied elements of the array.
void | sort ()
| Sorts the array using heapsort.
void | swap (array< T, TAlloc > &other)
| Swap the content of this array container with the content of another array.

## Detailed Description

template<class T, typename TAlloc = irrAllocator<T>>
class irr::core::array< T, TAlloc >

Self reallocating template array (like stl vector) with additional features.

Some features are: Heap sorting, binary search methods, easier debugging.

Definition at line 22 of file irrArray.h.

## Constructor & Destructor Documentation

## array() [1/3]

template<class T, typename TAlloc = irrAllocator<T>>

irr::core::array< T, TAlloc >::array | ( |  | ) |

inline

Default constructor for empty array.

Definition at line 28 of file irrArray.h.

## array() [2/3]

template<class T, typename TAlloc = irrAllocator<T>>

irr::core::array< T, TAlloc >::array | ( | u32 | start_count | ) |

inline

Constructs an array and allocates an initial chunk of memory.

Parameters

  start_count | Amount of elements to pre-allocate.

Definition at line 37 of file irrArray.h.

## array() [3/3]

template<class T, typename TAlloc = irrAllocator<T>>

irr::core::array< T, TAlloc >::array | ( | const array< T, TAlloc > & | other | ) |

inline

Copy constructor.

Definition at line 46 of file irrArray.h.

## ~array()

template<class T, typename TAlloc = irrAllocator<T>>

irr::core::array< T, TAlloc >::~array | ( |  | ) |

inline

Destructor.

Frees allocated memory, if set_free_when_destroyed was not set to false by the user before.

Definition at line 55 of file irrArray.h.

## Member Function Documentation

## allocated_size()

template<class T, typename TAlloc = irrAllocator<T>>

u32 irr::core::array< T, TAlloc >::allocated_size | ( |  | ) | const

inline

Get amount of memory allocated.

Returns
  Amount of memory allocated. The amount of bytes allocated would be allocated_size() * sizeof(ElementTypeUsed);

Definition at line 377 of file irrArray.h.

## binary_search() [1/3]

template<class T, typename TAlloc = irrAllocator<T>>

s32 irr::core::array< T, TAlloc >::binary_search | ( | const T & | element | ) |

inline

Performs a binary search for an element, returns -1 if not found.

The array will be sorted before the binary search if it is not already sorted. Caution is advised! Be careful not to call this on unsorted const arrays, or the slower method will be used.

Parameters

  element | Element to search for.

Returns
  Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 409 of file irrArray.h.

Referenced by irr::core::array< core::stringc >::binary_search(), irr::core::array< core::stringc >::binary_search(), and irr::core::array< core::stringc >::binary_search_multi().

## binary_search() [2/3]

template<class T, typename TAlloc = irrAllocator<T>>

s32 irr::core::array< T, TAlloc >::binary_search | ( | const T & | element | ) | const

inline

Performs a binary search for an element if possible, returns -1 if not found.

This method is for const arrays and so cannot call sort(), if the array is not sorted then linear_search will be used instead. Potentially very slow!

Parameters

  element | Element to search for.

Returns
  Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 422 of file irrArray.h.

## binary_search() [3/3]

template<class T, typename TAlloc = irrAllocator<T>>

s32 irr::core::array< T, TAlloc >::binary_search | ( | const T & | element,
|  | s32 | left,
|  | s32 | right ) const

inline

Performs a binary search for an element, returns -1 if not found.

Parameters

  element | Element to search for.
  left | First left index
  right | Last right index.

Returns
  Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 437 of file irrArray.h.

## binary_search_multi()

template<class T, typename TAlloc = irrAllocator<T>>

s32 irr::core::array< T, TAlloc >::binary_search_multi | ( | const T & | element,
|  | s32 & | last )

inline

Performs a binary search for an element, returns -1 if not found. it is used for searching a multiset The array will be sorted before the binary search if it is not already sorted.

Parameters

  element | Element to search for.
  &last | return lastIndex of equal elements

Returns
  Position of the first searched element if it was found, otherwise -1 is returned.

Definition at line 475 of file irrArray.h.

## clear()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::clear | ( |  | ) |

inline

Clears the array and deletes all allocated memory.

Definition at line 203 of file irrArray.h.

Referenced by irr::core::array< core::stringc >::~array(), irr::scene::quake3::getAsStringList(), irr::scene::quake3::getTextures(), irr::core::array< core::stringc >::operator=(), and irr::core::array< core::stringc >::set_pointer().

## const_pointer()

template<class T, typename TAlloc = irrAllocator<T>>

const T * irr::core::array< T, TAlloc >::const_pointer | ( |  | ) | const

inline

Gets a const pointer to the array.

Returns
  Pointer to the array.

Definition at line 360 of file irrArray.h.

## empty()

template<class T, typename TAlloc = irrAllocator<T>>

bool irr::core::array< T, TAlloc >::empty | ( |  | ) | const

inline

Check if array is empty.

Returns
  True if the array is empty false if not.

Definition at line 385 of file irrArray.h.

## erase() [1/2]

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::erase | ( | u32 | index | ) |

inline

Erases an element from the array.

May be slow, because all elements following after the erased element have to be copied.

Parameters

  index | Index of element to be erased.

Definition at line 536 of file irrArray.h.

## erase() [2/2]

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::erase | ( | u32 | index,
|  | s32 | count )

inline

Erases some elements from the array.

May be slow, because all elements following after the erased element have to be copied.

Parameters

  index | Index of the first element to be erased.
  count | Amount of elements to be erased.

Definition at line 557 of file irrArray.h.

## getLast() [1/2]

template<class T, typename TAlloc = irrAllocator<T>>

T & irr::core::array< T, TAlloc >::getLast | ( |  | ) |

inline

Gets last element.

Definition at line 333 of file irrArray.h.

## getLast() [2/2]

template<class T, typename TAlloc = irrAllocator<T>>

const T & irr::core::array< T, TAlloc >::getLast | ( |  | ) | const

inline

Gets last element.

Definition at line 342 of file irrArray.h.

## insert()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::insert | ( | const T & | element,
|  | u32 | index = 0 )

inline

Insert item into array at specified position.

Please use this only if you know what you are doing (possible performance loss). The preferred method of adding elements should be push_back().

Parameters

  element | Element to be inserted
  index | Where position to insert the new element.

Definition at line 135 of file irrArray.h.

Referenced by irr::core::array< core::stringc >::push_back(), and irr::core::array< core::stringc >::push_front().

## linear_reverse_search()

template<class T, typename TAlloc = irrAllocator<T>>

s32 irr::core::array< T, TAlloc >::linear_reverse_search | ( | const T & | element | ) | const

inline

Finds an element in linear time, which is very slow.

Use binary_search for faster finding. Only works if ==operator is implemented.

Parameters

  element | Element to search for.

Returns
  Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 522 of file irrArray.h.

## linear_search()

template<class T, typename TAlloc = irrAllocator<T>>

s32 irr::core::array< T, TAlloc >::linear_search | ( | const T & | element | ) | const

inline

Finds an element in linear time, which is very slow.

Use binary_search for faster finding. Only works if ==operator is implemented.

Parameters

  element | Element to search for.

Returns
  Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 506 of file irrArray.h.

Referenced by irr::core::array< core::stringc >::binary_search().

## operator!=()

template<class T, typename TAlloc = irrAllocator<T>>

bool irr::core::array< T, TAlloc >::operator!= | ( | const array< T, TAlloc > & | other | ) | const

inline

Inequality operator.

Definition at line 308 of file irrArray.h.

## operator=()

template<class T, typename TAlloc = irrAllocator<T>>

const array< T, TAlloc > & irr::core::array< T, TAlloc >::operator= | ( | const array< T, TAlloc > & | other | ) |

inline

Assignment operator.

Definition at line 267 of file irrArray.h.

## operator==()

template<class T, typename TAlloc = irrAllocator<T>>

bool irr::core::array< T, TAlloc >::operator== | ( | const array< T, TAlloc > & | other | ) | const

inline

Equality operator.

Definition at line 295 of file irrArray.h.

## operator[]() [1/2]

template<class T, typename TAlloc = irrAllocator<T>>

T & irr::core::array< T, TAlloc >::operator[] | ( | u32 | index | ) |

inline

Direct access operator.

Definition at line 315 of file irrArray.h.

## operator[]() [2/2]

template<class T, typename TAlloc = irrAllocator<T>>

const T & irr::core::array< T, TAlloc >::operator[] | ( | u32 | index | ) | const

inline

Direct const access operator.

Definition at line 324 of file irrArray.h.

## pointer()

template<class T, typename TAlloc = irrAllocator<T>>

T * irr::core::array< T, TAlloc >::pointer | ( |  | ) |

inline

Gets a pointer to the array.

Returns
  Pointer to the array.

Definition at line 352 of file irrArray.h.

## push_back()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::push_back | ( | const T & | element | ) |

inline

Adds an element at back of array.

If the array is too small to add this new element it is made bigger.

Parameters

  element | Element to add at the back of the array.

Definition at line 112 of file irrArray.h.

Referenced by irr::scene::quake3::getAsStringList(), and irr::scene::quake3::getTextures().

## push_front()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::push_front | ( | const T & | element | ) |

inline

Adds an element at the front of the array.

If the array is to small to add this new element, the array is made bigger. Please note that this is slow, because the whole array needs to be copied for this.

Parameters

  element | Element to add at the back of the array.

Definition at line 123 of file irrArray.h.

## reallocate()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::reallocate | ( | u32 | new_size,
|  | bool | canShrink = true )

inline

Reallocates the array, make it bigger or smaller.

Parameters

  new_size | New size of array.
  canShrink | Specifies whether the array is reallocated even if enough space is available. Setting this flag to false can speed up array usage, but may use more memory than required by the data.

Definition at line 67 of file irrArray.h.

Referenced by irr::core::array< core::stringc >::array(), irr::core::array< core::stringc >::insert(), and irr::core::array< core::stringc >::set_used().

## set_free_when_destroyed()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::set_free_when_destroyed | ( | bool | f | ) |

inline

Sets if the array should delete the memory it uses upon destruction.

Also clear and set_pointer will only delete the (original) memory area if this flag is set to true, which is also the default. The methods reallocate, set_used, push_back, push_front, insert, and erase will still try to deallocate the original memory, which might cause troubles depending on the intended use of the memory area.

Parameters

  f | If true, the array frees the allocated memory in its destructor, otherwise not. The default is true.

Definition at line 247 of file irrArray.h.

## set_pointer()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::set_pointer | ( | T * | newPointer,
|  | u32 | size,
|  | bool | _is_sorted = false,
|  | bool | _free_when_destroyed = true )

inline

Sets pointer to new array, using this as new workspace.

Make sure that set_free_when_destroyed is used properly.

Parameters

  newPointer | Pointer to new array of elements.
  size | Size of the new array.
  _is_sorted | Flag which tells whether the new array is already sorted.
  _free_when_destroyed | Sets whether the new memory area shall be freed by the array upon destruction, or if this will be up to the user application.

Definition at line 228 of file irrArray.h.

## set_sorted()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::set_sorted | ( | bool | _is_sorted | ) |

inline

Sets if the array is sorted.

Definition at line 584 of file irrArray.h.

## set_used()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::set_used | ( | u32 | usedNow | ) |

inline

Sets the size of the array and allocates new elements if necessary.

Please note: This is only secure when using it with simple types, because no default constructor will be called for the added elements.

Parameters

  usedNow | Amount of elements now used.

Definition at line 257 of file irrArray.h.

## setAllocStrategy()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::setAllocStrategy | ( | eAllocStrategy | newStrategy = ALLOC_STRATEGY_DOUBLE | ) |

inline

set a new allocation strategy

if the maximum size of the array is unknown, you can define how big the allocation should happen.

Parameters

  newStrategy | New strategy to apply to this array.

Definition at line 103 of file irrArray.h.

## size()

template<class T, typename TAlloc = irrAllocator<T>>

u32 irr::core::array< T, TAlloc >::size | ( |  | ) | const

inline

Get number of occupied elements of the array.

Returns
  Size of elements in the array which are actually occupied.

Definition at line 368 of file irrArray.h.

Referenced by irr::scene::quake3::getAsStringList(), and irr::scene::quake3::getTextures().

## sort()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::sort | ( |  | ) |

inline

Sorts the array using heapsort.

There is no additional memory waste and the algorithm performs O(n*log n) in worst case.

Definition at line 394 of file irrArray.h.

Referenced by irr::core::array< core::stringc >::binary_search(), and irr::core::array< core::stringc >::binary_search_multi().

## swap()

template<class T, typename TAlloc = irrAllocator<T>>

void irr::core::array< T, TAlloc >::swap | ( | array< T, TAlloc > & | other | ) |

inline

Swap the content of this array container with the content of another array.

Afterwards this object will contain the content of the other object and the other object will contain the content of this object.

Parameters

  other | Swap content with this object

Definition at line 594 of file irrArray.h.

The documentation for this class was generated from the following file:

- irrArray.h

- Irrlicht Engine Documentation © 2003-2012 by Nikolaus Gebhardt. Generated on for Irrlicht 3D Engine by Doxygen 1.15.0