0

マップのベクトル内でマップ要素のキーを検索するために、次の関数を使用しています。

Entry* SymTab::lookup(const char* name)
{
for (int i=0;i<table.size();i++) //table is the vector
 {
  map<const char*, Entry, ltstr>::iterator its= table.at(i).find(name); 
    if (its != cur.end())
    {
    Entry* obj = &its->second;
    cout<<(*its).first<<endl;
    return obj;
    }


  }
}     

この関数は、最初のベクトルインデックス(at(0))内の任意のアイテムの値を正しく返します。しかし、2番目のインデックス(at(1))内の要素にアクセスしようとすると、セグフォールトが発生します。マップが正しく挿入され、2番目のインデックスに入力されていることを確認します。

誰かがここで問題を見ますか?

4

1 に答える 1

5

誰かがここで問題を見ますか?

はい。cur現在のマップを追跡しません。

行を次のように置き換えてみてくださいif

if (its != table.at(i).end())
于 2012-04-09T16:32:59.907 に答える