这是我第一次制作散列表。我试图将字符串(键)与类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;
我收到写着“敌不过‘操作[]’中“((模拟的错误消息* )本) - >仿真:: liveStrainTable [MRCA]”“。我也尝试以不同的方式使用“liveStrainTable.insert(...)”,但无济于事。
真的会喜欢这方面的一些帮助。我很难理解适合SGI hash_map的语法,并且SGI reference几乎没有为我澄清任何事情。谢谢。
这是否有什么优势呢? – 2009-10-30 15:46:15
不使用具有两个前导下划线的命名空间:) – 2009-10-30 16:19:35