The ::ARC_Vector type is a simple "expandable" array. The array itself does not actually expand, but it double or halves in size and copies the contents into the new array.
The API Reference for ::ARC_Vector can be found here: arc/std/vector.h
# Basic Example:
```c
#include <arc/std/vector.h>
#include <stdint.h>
#include <stdio.h>
//creating an array with no callbacks (the simplest example of the array)
ARC_Vector *vector;
ARC_Vector_Create(&vector, NULL, NULL);
//for the example we are using a stack pointer
//this is not recommended unless it is freed within the scope it is called
uint32_t value0 = 10;
uint32_t value1 = 11;
uint32_t value2 = 12;
//add the values to the vector
ARC_Vector_Add(vector, &value0);
ARC_Vector_Add(vector, &value1);
ARC_Vector_Add(vector, &value2);
//create the variable that will be used to get an index
uint32_t *valueRef = NULL;
//print the values within the vector
for(uint32_t index = 0; index <ARC_Vector_GetSize(vector);index++){
//cast the return value back to what it initially was
A handy feature of this implmentation fo a vector is the ability to add a comparison callback. This callback can be used to remove an item that matches based on a provided function.
# Comparison Callback Example
```c
#include <arc/std/vector.h>
#include <stdint.h>
#include <stdio.h>
//the comparison callback to check if two integer pointers hold the same value
As the vector takes a pointer, usually that pointer is allocated right before being added. To simplify the cleanup of the vector's values there is a destruction callback. This callback is run on clear, remove, and destroy to free all the memory within the vector.
# Destruction Callback Example
```c
#include <arc/std/vector.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
//the destruction callback to free the allocated int32_t values
void ARC_Example_VectorDestroyDataFn(void *data){
free((int32_t *)data);
}
//helper function that adds a int32_t to a vector, written to cut back on duplicate code