我的迭代器发生了什么事?

时间:2011-03-15 10:54:08

标签: c++ stl map iterator

您好我的问题是存在一个对象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;
}
SetIterators函数中的

我想确保地图中是否存在某个键并将iterators设置为它们 当我在SetIterators内存在时,迭代器设置正确。 但回来后他们错过了他们的价值,并设置为Bad Ptr。

我打电话给SetIterators,如下所示。

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

这是怎么发生的?我怎么能阻止这个? 谢谢herzl。

1 个答案:

答案 0 :(得分:-1)

在地图中添加或删除新值时,迭代器将失效。