|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Messaggi: 848
|
[C++] Array associativi
Ciao,
ho un problema con un'implementazione di un array associativo. Fondamentalmente, la struttura è di questo tipo Codice:
namespace mine {
struct myHash
{
size_t operator()(std::string s) const {
size_t h=__gnu_cxx::hash<const char *>()(s.c_str());
return h;
}
};
namespace {
typedef std::map<std::string, std::pair<std::string, int> > QP;
//typedef google::dense_hash_map<std::string, std::pair<std::string, int>, myHash > QP;
}
class myClass {
private:
static google::dense_hash_map<std::string, QP, myHash> QPs;
[...]
}
}
Comunque: QPs contiene 1 o 2 elementi, almeno inizialmente, ma mi serve che sia un array associativo per flessibilità di programmazione e di esecuzione. QPs ha come valori delle map "QP" che invece contengono parecchie migliaia di elementi. Ora, veniamo al problema: l'accesso alla singola mappa QP è LENTISSIMO, sia con std::map che con dense_hash_map La chiamata a QPs["it"], per dire, richiede 3 millesimi, la chiamata a QPs["it"]["parola"] richiede un solo millesimo in più. Potete aiutarmi a capire perchè, ed eventualmente consigliarmi una struttura migliore per QPs che probabilmetne non va tanto bene con così pochi elementi? Grazie! grana |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Vedo che stai usando gcc...hai provato std::hash_map ? Non è standard, ma è definita in molti compilatori.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:25.




















