map的正确删除方式
遍历删除map元素的正确方式是
for(itor = maptemplate.begin; itor != maptemplate.end(); )
{
if(neederase)
maptemplate.erase(itor++); //itor指向下一个元素,但返回itor当前的副本,直接erase(itor),itor已经是无效元素,调用itor++是非法操作(不同编译器会有差别)
else
itor++;
}
map据说是用红黑树实现的,树通常是基于链表存储而非顺序数组存储,erase时应该避免访问已经删除的内存。