我試圖運行此函數:地圖/套迭代器不derefrencable運行時錯誤
os::TMXTileset* os::TMXMap::getTilesetFromGid(int gid)
{
TMXTileset* tileset;
std::map<std::string, TMXTileset>::iterator it;
std::map<std::string, TMXTileset>::iterator comp;
for (it=tilesetMap.begin(); it != tilesetMap.end(); it++)
{
comp = it;
comp++;
if ((gid >= it->second.getFirstGid()) && (gid < comp->second.getFirstGid()))
{
return &it->second;
}
}
tileset = &it->second;
return tileset;
}
..但它給我這個錯誤:
"map/set iterator not derefrencable"
我首先想到的是停止取消引用它(使用它 - >秒而不是(* it).second),但這並沒有改變任何東西。
任何想法?
謝謝,那很完美。 我認爲end()指的是最後一個元素,這解釋了我的錯誤。 謝謝! – DormoTheNord
考慮使用前增量(++ i)而不是後增量。特別是在迭代器的情況下,這可以更快。如果你不需要它,你還應該縮小它的範圍和比例。新的C++關鍵字auto對此非常有幫助。只需刪除它和comp的聲明,並在第一次使用之前放置一個auto。 (for(auto it = tilsetMap.begin()... and auto comp = it;) –