这是我第一次制作哈希表。我正在尝试将字符串(键)与指向 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;
我收到一条错误消息,内容为“'((Simulation*)this)->Simulation::liveStrainTable[MRCA]' 中的 'operator[]' 不匹配”。我也尝试过以不同的方式使用“liveStrainTable.insert(...)”,但无济于事。
真的很想在这方面提供一些帮助。我很难理解适用于 SGI hash_map 的语法,而SGI 参考几乎没有为我澄清任何事情。谢谢。