Mmm no conozco C++ pero creo que te mataste mucho, ya que lo que se hace es meter los numeros en un array entonces con un Do-While vas generando numeros randoms "mientras" ese numero generado no se encuentre en la lista. Y te queda mas facil de leer y mas corto.