Mohegan
24-12-2013, 11:21
Salve ragazzi, in un progetto per l'università mi sono imbattuto in questo problema, una volta definito un iteratore costante, il ciclo su tutta la mappa non viene fatto della dimensione corretta, cioè, nella classe document, c'è una bag of words implementata così:
std::map<std::string,int> bag;
una volta caricata con un documento, la mappa ha dimensione 175, ma il ciclo nel seguente codice viene ripetuto solamente 91 volte, come mai?? :muro:
//Put doc.bag in stream
void DocToStream(std::fstream& stream, document& doc)
{
std::map<std::string,int>::const_iterator iter;
uint i_t=0x00;
iter=doc.GetBag().begin();
stream<<doc.GetName();
stream<<" ";
stream<<doc.GetSize();
stream<<" ";
stream<<doc.GetClass();
stream<<" ";
for(;iter!=doc.GetBag().end();++iter)
{
stream<<iter->first;
stream<<" ";
std::cout<<(i_t++)<<std::endl;
stream<<iter->second;
stream<<" ";
}
}
Date per scontato che la dimensione 175 è quella effettiva, e non sto sbagliando a calcolarla, inoltre non ci sono problemi per questa chiamata a funzione, grazie in anticipo per l'aiuto
std::map<std::string,int> bag;
una volta caricata con un documento, la mappa ha dimensione 175, ma il ciclo nel seguente codice viene ripetuto solamente 91 volte, come mai?? :muro:
//Put doc.bag in stream
void DocToStream(std::fstream& stream, document& doc)
{
std::map<std::string,int>::const_iterator iter;
uint i_t=0x00;
iter=doc.GetBag().begin();
stream<<doc.GetName();
stream<<" ";
stream<<doc.GetSize();
stream<<" ";
stream<<doc.GetClass();
stream<<" ";
for(;iter!=doc.GetBag().end();++iter)
{
stream<<iter->first;
stream<<" ";
std::cout<<(i_t++)<<std::endl;
stream<<iter->second;
stream<<" ";
}
}
Date per scontato che la dimensione 175 è quella effettiva, e non sto sbagliando a calcolarla, inoltre non ci sono problemi per questa chiamata a funzione, grazie in anticipo per l'aiuto