map迭代器删除元素有关问题

map迭代器删除元素问题
看书上说迭代器的earse接口会调用析构函数,是不是在map中第二个元素如果是指针的话释放的时候就不需要自己再delete了?

typedef struct
{
  int a;
}test;

map<int, test*> mm;
int main()
{
  test* t0 = new test;
  test* t1 = new test;
  mm[0] = t0;
  mm[1] = t1;

  map<int, test*>::iterator it = mm.begin();
  for(;it != mm.end();)
  {
  if(it->first == 0)
  {
  //delete it->second; 需要删除这个指针吗?
  mm.earse(it++);
  }
  else
  {
  it++;
  }
  }

}

------解决方案--------------------
如果是你自己new的,就需要你自己delete,无论指针在不在容器里。
------解决方案--------------------
容器里面存储的是指针本身,因此erase只会删除指针,而不会删除指针指向的对象。
要删除指针指向的对象,必须使用delete。