Этот метод вызывает ошибку прерывания: "map/set iterator not incrementable."
Из-за этого после сбоя if
и определения итератора vaild, который должен быть удален (и есть), переход к следующему итератору на карте с помощью ++_iter
завершается неудачей, поскольку _iter
больше не является допустимым объектом / указателем .
Какова правильная процедура для итерации по карте И с возможностью удаления отдельных элементов повсюду?
typedef std::map<std::string, BITMAP*> MapStrBmp;
typedef MapStrBmp::iterator MapStrBmpIter;
\\...
void BitmapCache::CleanCache() {
//Clean the cache of any NULL bitmaps that were deleted by caller.
for(MapStrBmpIter _iter = _cache.begin(); _iter != _cache.end(); ++_iter) {
if(_iter->second != NULL) {
if((_iter->second->w < 0 && _iter->second->h < 0) == false) continue;
}
_cache.erase(_iter);
}
}