Ma in

unione

nel for

for(int i = 0; i < dimset; i++)

tu controlli degli elementi che non esistono in A e/o B ...

dimset infatti è maggiore della dimensione massima dei due insiemi e quindi sfori i rispettivi vettori