void leerficheroSP(Dispersion<StructPost>& disp, const string& nfichero, const bool& cabecera) { string aux_str; ifstream f; f.open(nfichero.c_str()); if (f.good()) { if (cabecera && !f.eof()) { getline(f,aux_str); } while (getline(f,aux_str)) { CodigoPost cp; aux_str=cp.fromCSV(aux_str); StructPost* existente=disp.buscar(hash_djb2(aux_str.c_str())); if (existente) { existente->codigos.insertarFin(cp); } else { StructPost sp={aux_str}; sp.codigos.insertarFin(cp); disp.insertar(hash_djb2(aux_str.c_str()),sp); } } } f.close(); }
void Aplicacion6::cargarTablaDispersion(Dispersion<StructPost> &disp) { cout << "Iniciando carga de la tabla de Dispersión." << endl; long int tIni = time(0); CargadorDatos cd; CodigoPost* d; unsigned long clave = 0; d=cd.siguienteDetalle(); while(d != 0){ clave = djb2(d->getCity()); //si la ciudad no está aún en el árbol la creo. if (disp.buscar(clave) == 0){ StructPost c; c.setNombreCiudad(d->getCity()); disp.insertar(clave,c); } disp.buscar(clave)->getListadoCodigos().insertarFin(d); d=cd.siguienteDetalle(); } long int tFin = time(0); cout << "Número máximo de colisiones: " << disp.maxI << endl; cout << "Tabla de dispersión cargada(" << (tFin-tIni) << " segs)."<< endl; }