C++ で辞書 (ADT) を実装する課題に取り組んでいます。最初に Xcode でプログラムを作成しましたが、すべて正常に動作しているように見えました。しかし、私は最近、採点者が Visual Studio 2010 を使用していることを発見したので、自分のコードが VS2010 でも動作することを確認しようとしました....
私が今直面している問題はremove()
、ハッシュ テーブルの関数にあります。基本的に、リストのベクトルを使用し、リストを繰り返し処理して衝突エントリを削除しています。ただし、この関数をテストしようとするとremove()
、次のエラーが発生しますdebug assertion failed! expression list iterators incompatible
。アサートに関する Visual C++ のドキュメントを調べてみましたが、すべてが機能するように見えます....見落としているものはありますか?
これが私のコードです:
///**DELETE***////
void remove(string key) {
size_t index = hashString(key);
list<Entry>& entry = table.at(index);
for(typename list<Entry>::iterator it = entry.begin();
it != entry.end();
/**/)
{
if (it->data == key) {
table[index].erase(it);
} else
it++;
}
//entry not found
cout << "Error: Cannot Delete... No Such Entry"<< endl;
}