View Single Post
Old 21-05-2007, 16:11   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C++] Problema con iterator di una map

Ciao.

Ho un nuovo problema nel progetto che sto sviluppando. Ho una classe definita in questo modo:

Codice:
class Dns{
      private:
         vector< int > proxy;      
         vector< Provider > provider;    
         map< string, vector<int> > mapper;    
         vector< Tabella > table; Client-Proxy
      public:
         Dns();   // costruttore di default
         Dns(vector<int>& , vector<Provider>& ); 
         void Associations(int, int);  
         void stampa_mapper(int []);
         int RequestDNS(const int, const string&); 
};
La map di nome mapper viene riempita ciclicamente nella funzione Associations tramite un'istruzione del tipo
Codice:
mapper.insert(pair<string,vector<int> >(provider[i].nome_provider,tmp));
stampa_mapper è la funzione che mi stampa il mapper ed è fatta così:
Codice:
void Dns::stampa_mapper(int nproxy[]){
     map<string,vector<int> >::iterator it_first;
     vector<int>::iterator it_second;
     for(it_first=mapper.begin(); it_first != mapper.end(); ++it_first){
        cout << it_first->first << endl;
        cout << "Proxy in questo provider: " << it_first->second.size() << endl;
        for(it_second=it_first->second.begin(); it_second != it_first->second.end(); ++it_second)
           cout << *it_second << endl;
        system("PAUSE");
     }
}
Ora il problema viene con la RequestDNS(). Praticamente per l'iteratore eseguo quasi la stessa operazione che ho fatto in stampa_mapper (cioè creo un'iteratore map< string, vector<int> >::iterator imm) e poi provo a fare

imm = mapper.find(una certa stringa);

Controllando con gdb l'indirizzo dell'iteratore vedo che è tutto a posto. Solo che se faccio imm->first o imm->second mi dice "There is no member or method named first (o second)". Non riesco a capire per quale motivo!

Ho bisgono del vostro aiuto. Grazie.
Manugal è offline   Rispondi citando il messaggio o parte di esso