# DataStructures::List< list_type > Class Template Reference

Array based implementation of a list. More...

`#include <DS_List.h>`

List of all members.

## Public Member Functions
| List ()
| Default constructor.
| ~List ()
| Destructor.
| List (const List &original_copy)
List & | operator= (const List &original_copy)
| Assign one list to another.
list_type & | operator[] (const unsigned int position) const
list_type & | Get (const unsigned int position) const
void | Push (const list_type input, const char *file=__FILE__, unsigned int line=__LINE__)
list_type & | Pop (void)
void | Insert (const list_type input, const unsigned int position, const char *file=__FILE__, unsigned int line=__LINE__)
void | Insert (const list_type input, const char *file=__FILE__, unsigned int line=__LINE__)
void | Replace (const list_type input, const list_type filler, const unsigned int position)
void | Replace (const list_type input)
void | RemoveAtIndex (const unsigned int position)
void | RemoveAtIndexFast (const unsigned int position)
void | RemoveFromEnd (const unsigned num=1)
| Delete the element at the end of the list.
unsigned int | GetIndexOf (const list_type input) const
unsigned int | Size (void) const
void | Clear (bool doNotDeallocateSmallBlocks=false)
| Clear the list.
void | Compress (void)

## Detailed Description

### template<class list_type>
class DataStructures::List< list_type >

Array based implementation of a list.

Note:
  ONLY USE THIS FOR SHALLOW COPIES. I don't bother with operator= to improve performance.

## Constructor & Destructor Documentation

template<class list_type >

DataStructures::List< list_type >::List | ( | const List< list_type > & | original_copy | ) | `[inline]`

Copy constructor

Parameters:

  `[in]` | original_copy | The list to duplicate

## Member Function Documentation

template<class list_type >

void DataStructures::List< list_type >::Compress | ( | void |  | ) | `[inline]`

Frees overallocated members, to use the minimum memory necessary

Attention:
  This is a slow operation

template<class list_type >

list_type & DataStructures::List< list_type >::Get | ( | const unsigned int | position | ) | const`[inline]`

Access an element by its index in the array

Parameters:

  `[in]` | position | The index into the array.

Returns:
  The element at position position.

template<class list_type >

unsigned int DataStructures::List< list_type >::GetIndexOf | ( | const list_type | input | ) | const`[inline]`

Returns the index of the specified item or MAX_UNSIGNED_LONG if not found

Parameters:

  `[in]` | input | The element to check for

Returns:
  The index or position of input in the list.

Return values:

  | MAX_UNSIGNED_LONG | The object is not in the list
  | [Integer] | The index of the element in the list

template<class list_type >

void DataStructures::List< list_type >::Insert | ( | const list_type | input,
|  | const char * | file = `__FILE__`,
|  | unsigned int | line = `__LINE__` |
| ) |  |  | `[inline]`

Insert at the end of the list.

Parameters:

  `[in]` | input | The new element.

template<class list_type >

void DataStructures::List< list_type >::Insert | ( | const list_type | input,
|  | const unsigned int | position,
|  | const char * | file = `__FILE__`,
|  | unsigned int | line = `__LINE__` |
| ) |  |  | `[inline]`

Insert an element at position position in the list

Parameters:

  `[in]` | input | The new element.
  `[in]` | position | The position of the new element.

template<class list_type >

list_type & DataStructures::List< list_type >::operator[] | ( | const unsigned int | position | ) | const`[inline]`

Access an element by its index in the array

Parameters:

  `[in]` | position | The index into the array.

Returns:
  The element at position position.

template<class list_type >

list_type & DataStructures::List< list_type >::Pop | ( | void |  | ) | `[inline]`

Pop an element from the end of the stack

Precondition:
  Size()>0

Returns:
  The element at the end.

template<class list_type >

void DataStructures::List< list_type >::Push | ( | const list_type | input,
|  | const char * | file = `__FILE__`,
|  | unsigned int | line = `__LINE__` |
| ) |  |  | `[inline]`

Push an element at the end of the stack

Parameters:

  `[in]` | input | The new element.

template<class list_type >

void DataStructures::List< list_type >::RemoveAtIndex | ( | const unsigned int | position | ) | `[inline]`

Delete the element at position position.

Parameters:

  `[in]` | position | The index of the element to delete

template<class list_type >

void DataStructures::List< list_type >::RemoveAtIndexFast | ( | const unsigned int | position | ) | `[inline]`

Delete the element at position position.

Note:
  - swaps middle with end of list, only use if list order does not matter

Parameters:

  `[in]` | position | The index of the element to delete

template<class list_type >

void DataStructures::List< list_type >::Replace | ( | const list_type | input | ) | `[inline]`

Replace the last element of the list by input .

Parameters:

  `[in]` | input | The element used to replace the last element.

template<class list_type >

void DataStructures::List< list_type >::Replace | ( | const list_type | input,
|  | const list_type | filler,
|  | const unsigned int | position |
| ) |  |  | `[inline]`

Replace the value at position by input. If the size of the list is less than position, it increase the capacity of the list and fill slot with filler.

Parameters:

  `[in]` | input | The element to replace at position position.
  `[in]` | filler | The element use to fill new allocated capacity.
  `[in]` | position | The position of input in the list.

template<class list_type >

unsigned int DataStructures::List< list_type >::Size | ( | void |  | ) | const`[inline]`

Returns:
  The number of elements in the list

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

- C:/RakNet/Source/DS_List.h