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