私が現在抱えている問題について、あなたが私に教えてくれるかもしれません。したがって、問題は、マップ内のいくつかの要素を消去しようとすると、アクセスメモリが不良になることです。次のtypedefを想定しています:
typedef std::map < std::string *, Document *, pStringCompare > Map;
そして、次のすべてのコードを実行する前に、(たとえば)2つの要素を含むマップをすでにインスタンス化したと仮定します。このコードはうまく機能しています:
Map::iterator it = documents.begin();
std::string *s = it->first;
Document *d = it->second;
documents.erase(it);
delete d;
delete s;
しかし、イテレータでループしようとすると、エラーが発生します。
for (Map::iterator it = documents.begin() ; it != documents.end() ; it++)
{
std::string s = * ( it->first);
Document dd = * (it->second);
std::cout << s << " || " << dd;
documents.erase(it); // This line causes the bad access memory error.
}
ご協力いただきありがとうございます !本当にありがたいです!
アレクス