# C++ Custom Vector Template Class

This is an implementation of a template class for storing data in any type. It includes user-friendly interface with lots of helper abstract functions and also custom iterators.

## Member Functions

Function Name | Parameters | Return Type | Description |
---|---|---|---|

add | T element | void | Adds given element to end of current vector |

clear | void | Clears the vector | |

count | T element | int | Returns total count of the element |

first | T | Returns first element in the vector | |

firstIndexOf | T element | int | Returns first index of the element in the vector |

getCapacity | int | Returns capacity of the vector | |

getSize | int | Returns size of the vector | |

insert | T element, int index | void | Inserts given element to a specific index |

includes | T element | bool | Returns if the element exists in the vector |

isEmpty | bool | Returns if the vector is empty | |

last | T | Returns last element in the vector | |

lastIndexOf | T element | int | Returns last index of the element in the vector |

pop | T element | Returns first element in the vector and removes it from the vector | |

push | T element | void | Inserts the element in first index of the vector |

select | bool (T) | CustomVector | Returns a sub-vector with elements in the vector which returns true for given lambda function |

sort | void | Sorts the vector | |

sort | bool(T,T) | void | Sorts the vector according to the given lambda function |

subArray | int start,int end | CustomVector | Returns a sub-vector between given indexes |

swap | int index1, int index2 | void | Swaps elements in the given indexes |

remove | T element | void | Removes all occurances of the element from the vector |

removeIf | bool(T) | void | Removes all elements from the vector which return false from given lambda function |

removeIndex | int index | void | Removes the element in the given index |

removeRange | int start, int end | void | Removes all elements in the given range of indexes |

reverse | void | Reverses order of the vector |

## Overloaded Operators

Operator | Parameters | Return Type | Description |
---|---|---|---|

<< | std::ostream stream, CustomVector element | std::ostream | Inserts elements of the vector to stream via stream insertion operator |

+ | CustomVector vector,CustomVector other | CustomVector | Concats elements of two vectors |

- | CustomVector vector,CustomVector other | CustomVector | Removes elements of second vector from first vector |

^ | CustomVector vector,CustomVector other | CustomVector | Returns an vector which includes intersection of two vectors |

== | CustomVector vector,CustomVector other | bool | Returns if two vectors are equal |

!= | CustomVector vector,CustomVector other | bool | Returns if two vectors are not equal |

[] | int index | T | Returns element in given index |

[] | {int index1,int index2} | CustomVector | Returns an sub-vector which includes elements between two indexes |

## Iterators

This template class comes with its own iterators here and they are all compitable with STL functions such as `std::find`

, `std::sort`

Function Name | Description |
---|---|

begin | Returns an iterator which points to start of the vector |

end | Returns an iterator which points to start of the vector |

cbegin | Returns an const iterator which points to start of the vector |

cend | Returns an const iterator which points to start of the vector |

## Important Note

To use some of listed functions and overloaded operators given T type must support these operations