ハッシュテーブルを作るのは初めてです。文字列 (キー) をクラス 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リファレンスはほとんど何も説明していません。ありがとう。