将对象插入哈希表(C)
作者:互联网
这是我第一次制作哈希表.我试图将字符串(键)与指向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;
我收到一条错误消息,内容为“((模拟*)这里的’操作符[]’不匹配 – >模拟:: liveStrainTable [MRCA]’.”我也尝试过以不同方式使用“liveStrainTable.insert(…)”,但无济于事.
真的很喜欢这方面的一些帮助.我很难理解适用于SGI hash_map的语法,而SGI reference对我来说几乎没有任何说明.谢谢.
解决方法:
试试liveStrainTable [MRCA.c_str()] = firstStrainPtr;.它期望const char *作为键值的类型,但MRCA具有类型字符串.
另一种方法是将liveStrainTable更改为:
hash_map< string, Strain *, hash<string>, eqstr > liveStrainTable;
标签:c,hashmap,sgi 来源: https://codeday.me/bug/20190827/1742442.html