что случилось с моими итераторами? - PullRequest
0 голосов
/ 15 марта 2011

Привет, в моей проблеме существует объект classA, как показано ниже typedef map myMap;

static string keys[3] = { "11" , "22" , "33" };

class classA {
   myMap::const_iterator m_iterators[3];
  int classA::SetIterators(const myMap &AllData)
}

int classA::SetIterators(const myMap &AllData)
{
    m_iterators[0]=AllData.find(keys[0]);
    ....
    return VALID;
}
Функция

in SetIterators Я хочу убедиться, что на карте есть какой-то ключ, и установить для них iterators когда я существую внутри SetIterators, итераторы установлены правильно. но после возвращения они теряют свою ценность и устанавливают на Bad Ptr.

Я звоню на SetIterators, как показано ниже.

 int classA::BuildView(const myMap &AllData)
 {
      if(SetIterators(AllData)== VALID) 
 }

Как это происходит? Как я могу предотвратить это? Спасибо, Герцль.

1 Ответ

0 голосов
/ 15 марта 2011

Итераторы будут недействительными, когда новые значения будут добавлены или удалены с карты.

...