Mensaje    Asunto: Problemas con clases STL "map" y "remove_if&q Responder citando

Mi pregunta es un poco retorcida, pero espero que alguien se haya visto en una situación similar al menos.

Tengo una estructura:
Código:

typedef struct {
    int lat;
    int reg;
} TChequeo;

Esta estructura la uso dentro de un map:
Código:

map<int, TChequeo> mapaChequeo;


Lo q quiero es poder eliminar aquellos elementos cuyo campo lat valga 0.
He hecho mil experimentos, pero siempre me da algún error. El asunto es que debería usar la función remove_if, pero no consigo que tire de ninguna forma.
El primer problema es que hay que definir un predicado, pero eso ya lo he hecho con:
Código:

    class chequeoLat0 {
    public:
        bool operator() (pair<const int, TChequeo> elem) {
            return elem.second.lat == 0;
        }
    };

    // y llamando luego a
    map<int, TChequeo>::iterator it;
    it = remove_if(mapaChequeo.begin(), mapaChequeo.end(), chequeoLat0());


Pues eso, que esto no tira de ninguna manera. Me conformo con que me respondan cualquiera de estas tres cosas:
- ¿cómo hacer q esto funcione?
- ¿cómo borrar unos elementos sin usar el remove_if?
- ¿alguna otra estructura de potencia similar a map que pueda usar?

Muchas gracias a todos por anticipado.