Arreglos dinámicos

Hola buenos días,

Recientemente he tratado de guardar unos datos de lectura los cuales me da un mouse, utilizando un mouse como sensor, y debo guardar los datos para luego realizar un calculo, aun así, no he logrado crear un arreglo dinámico, ya que no puedo utilizar Arrays normales por no conocer el numero de datos que guardare, ya he manejada java anteriormente, usualmente usaría la función ArrayList() pero no he encontrado un equivalente para C++

¿Me podrían ayudar? igualmente subo el código, ya que mi alternativa seria volver a programar todo para C# pero no estoy del todo seguro de que cambios específicos necesita el código.

De antemano les agradezco la ayuda

(el proyecto es un prototipo para poder crear un planimetro semi-digital)

unsigned long millisStart;
//inicializacion del mouse
long MouseX = 0;
long MouseY = 0;
char stat,x,y;
byte PS2ReadByte = 0;

//inicializacion del boton
int push_lee = 0;
int estadoLed = 0;
int estadoAnterior = 0;

List<int> guardadoX;
List<int> guardadoY;


//Definicion de puertos 
#define PS2CLOCK  6
#define PS2DATA   5
#define LED 13
#define push 3

void PS2GoHi(int pin){
  pinMode(pin, INPUT);
  digitalWrite(pin, HIGH);
}

void PS2GoLo(int pin){
  pinMode(pin, OUTPUT);
  digitalWrite(pin, LOW);
}

void PS2Write(unsigned char data){
  unsigned char parity=1;

  PS2GoHi(PS2DATA);
  PS2GoHi(PS2CLOCK);
  delayMicroseconds(300);
  PS2GoLo(PS2CLOCK);
  delayMicroseconds(300);
  PS2GoLo(PS2DATA);
  delayMicroseconds(10);
  PS2GoHi(PS2CLOCK);

  while(digitalRead(PS2CLOCK)==HIGH);

  for(int i=0; i<8; i++){
    if(data&0x01) PS2GoHi(PS2DATA);
    else PS2GoLo(PS2DATA);
    while(digitalRead(PS2CLOCK)==LOW);
    while(digitalRead(PS2CLOCK)==HIGH);
    parity^=(data&0x01);
    data=data>>1;
  }

  if(parity) PS2GoHi(PS2DATA);
  else PS2GoLo(PS2DATA);

  while(digitalRead(PS2CLOCK)==LOW);
  while(digitalRead(PS2CLOCK)==HIGH);

  PS2GoHi(PS2DATA);
  delayMicroseconds(50);

  while(digitalRead(PS2CLOCK)==HIGH);
  while((digitalRead(PS2CLOCK)==LOW)||(digitalRead(PS2DATA)==LOW));

  PS2GoLo(PS2CLOCK);
}

unsigned char PS2Read(void){
  unsigned char data=0, bit=1;

  PS2GoHi(PS2CLOCK);
  PS2GoHi(PS2DATA);
  delayMicroseconds(50);
  while(digitalRead(PS2CLOCK)==HIGH);

  delayMicroseconds(5);
  while(digitalRead(PS2CLOCK)==LOW);

  for(int i=0; i<8; i++){
    while(digitalRead(PS2CLOCK)==HIGH);
    if(digitalRead(PS2DATA)==HIGH) data|=bit;
    while(digitalRead(PS2CLOCK)==LOW);
    bit=bit<<1;
  }

  while(digitalRead(PS2CLOCK)==HIGH);
  while(digitalRead(PS2CLOCK)==LOW);
  while(digitalRead(PS2CLOCK)==HIGH);
  while(digitalRead(PS2CLOCK)==LOW);

  PS2GoLo(PS2CLOCK);

  return data;
}

void PS2MouseInit(void){
  PS2Write(0xFF);
  for(int i=0; i<3; i++) PS2Read();
  PS2Write(0xF0);
  PS2Read();
  delayMicroseconds(100);
}

void PS2MousePos(char &stat, char &x, char &y){
  PS2Write(0xEB);
  PS2Read();
  stat=PS2Read();
  x=PS2Read();
  guardadoX.Add(MouseX);
  y=PS2Read();
  
}

void readyMouse(){
  PS2GoHi(PS2CLOCK);
  PS2GoHi(PS2DATA);

  Serial.begin(115200);
  while(!Serial); 
  Serial.println("Setup");
  PS2MouseInit();
  Serial.println("Mouse Ready");
  millisStart=millis();
  MouseX = 0;
  MouseY = 0;
}

void setup(){
  //boton
  pinMode(LED, OUTPUT);
  pinMode(push, INPUT);

  //mouse
  readyMouse();

  //listas 
}



void loop(){
  //Acciones del boton
  push_lee = digitalRead(push);
  if ((push_lee == 1) && (estadoAnterior == 0)) {
    estadoLed = 1 - estadoLed;
    delay(10);
  }
  estadoAnterior = push_lee;
  if (estadoLed == 1) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }

  //Acciones del mouse
  //led apagado
  if(estadoLed==0){    
  if(millis() < millisStart){
    millisStart = millis();
  }
  if(millis() - millisStart > 1000){
    PS2MousePos(stat,x,y);
    Serial.print(stat, BIN);
    Serial.print("\tdelta X=");
    Serial.print(x, DEC);
    Serial.print("\tdelta Y=");
    Serial.println(y, DEC);
    millisStart = millis();
  }

  MouseX += x;
  MouseY += y;    
  }
  
  //  delay(1000);
}

La STL de c++ incluye todos esos objetos: vector, list, queue, etc. Ya está todo hecho.
https://es.m.wikibooks.org/wiki/Programación_en_C%2B%2B/Librería_Estándar_de_Plantillas

Oh! muy util, muchas gracias, busque pero no habia encontrado la manera, muchisimas gracias.