C'est la première fois que je crée une table de hachage. J'essaie d'associer des chaînes (les clés) avec des pointeurs sur des objets (les données) de la classe Strain.Insertion d'objets dans la table de hachage (C++)
// Simulation.h
#include <ext/hash_map>
using namespace __gnu_cxx;
struct eqstr
{
bool operator()(const char * s1, const char * s2) const
{
return strcmp(s1, s2) == 0;
}
};
...
hash_map< const char *, Strain *, hash< const char * >, struct eqstr > liveStrainTable;
Dans le fichier Simulation.cpp, je tente d'initialiser la table:
string MRCA;
for (int b = 0; b < SEQ_LENGTH; b++) {
int randBase = rgen.uniform(0,NUM_BASES);
MRCA.push_back(BASES[ randBase ]);
}
Strain * firstStrainPtr;
firstStrainPtr = new Strain(idCtr, MRCA, NUM_STEPS);
liveStrainTable[ MRCA ]= firstStrainPtr;
Je reçois un message d'erreur qui se lit « aucune correspondance pour 'opérateur []' dans « ((Simulation *) this) -> Simulation :: liveStrainTable [MRCA] '. " J'ai également essayé d'utiliser "liveStrainTable.insert (...)" de différentes manières, en vain.
J'aimerais beaucoup de l'aide à ce sujet. J'ai du mal à comprendre la syntaxe appropriée pour SGI hash_map, et le SGI reference clarifie à peine quelque chose pour moi. Merci.
Quel avantage que cela a? –
Ne pas utiliser l'espace de noms avec deux traits de soulignement principaux :) –