A parte il fatto che parli di "lista" e usi un vector (invece di usare una list come ti dicevo prima), sarebbe utile sapere cosa viene visualizzato da questa linea

printf("dimensione della lista prima %d\n", play.ships.size());

e quanto vale i ...