C ++:迭代全局容器时擦除

时间:2013-06-12 22:48:01

标签: c++ stl global

我在函数中有以下代码。 events是一个全局变量:

map<string, map<string, deque<Event> > > events;

这是我的功能:

void remove_events(vector<Event> c_events)
{
  vector<Event>::iterator it1;
  deque<Event>::iterator  it2;

  for(it1 = c_events.begin(); it1 != c_events.end(); ++it1)
  {
    it2 = events[it1->device][it1->dev_id].begin();

    while(it2 != events[it1->device][it1->dev_id].end())
    {
      if(*it1 == *it2)
      {
        it2 = events[it1->device][it1->dev_id].erase(it2);
      }
      else ++it2;
    }
  }
}

c_events包含我要从事件中删除的对象。但是,在我尝试删除它们之后,对象仍然保留在事件中。

如果您需要我发布更多代码,请告诉我。

0 个答案:

没有答案