Cita: el problema es cuando filtro
No estabas invocando la funcion de filtrado y sin embargo tu programa tenia mal comportamiento. El problema no puede estar (solamente) al interior de la funcion de filtrado. Tiene que haber mas de 1 problema.
Dicho de otra forma, como has descartado el resto y asocias el problema que tienes a esa funcion solamente, si no la estabas invocando y tenias un mal comportamiento del programa?
Tienes un comportamiento distinto ahora? Tus "cout" que aparecen en el main(), se ejecutan?