STLportのhash_mapのiteratorをインクリメントするときにキーが壊れていると正しくインクリメントできません。例えばこんな感じ。
struct X {
};
typedef std::hash_map<X*, int> M;
M m;
m.insert(M::value_type(new X(), 0));
for (M::iterator it = m.begin(); it != m.end(); ++it)
delete (*it).first;
インクリメントした後でdeleteすれば大丈夫です。
for (M::iterator it = m.begin(); it != m.end(); ) {
std::auto_ptr<X> p((*it).first);
++it;
}
std::mapだと前者でも問題にならないので結構はまりました。