Я впервые делаю хеш-таблицу. Я пытаюсь связать строки (ключи) с указателями на объекты (данные) класса Strain.
// 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;
В файле Simulation.cpp я пытаюсь инициализировать таблицу:
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;
Я получаю сообщение об ошибке, которое гласит: «Нет совпадения для« operator [] »в‘ ((Simulation *) this) -> Simulation :: liveStrainTable [MRCA] ’». Я также пытался использовать «liveStrainTable.insert (...)» по-разному, но безрезультатно.
Очень хотелось бы помочь с этим. Мне трудно разобраться в синтаксисе, подходящем для SGI hash_map, и ссылка SGI едва что-то проясняет для меня. Спасибо.