关于std::map erase

来源:互联网 发布:开源软件是什么 编辑:程序博客网 时间:2024/05/17 04:30

详见代码:

std::map<uint32, CTmpFightState>::iterator iterTmp = m_mapTmpFightState.begin();for (; iterTmp != m_mapTmpFightState.end();) {if (CDateTime::current() > iterTmp->second.m_nBeginTime + MIN(1)) {iterTmp = m_mapTmpFightState.erase(iterTmp); // windows下成立,linux下不成立} else {iterTmp++;}}

正确写法:

std::map<uint32, CTmpFightState>::iterator iterTmp = m_mapTmpFightState.begin();for (; iterTmp != m_mapTmpFightState.end();) {if (CDateTime::current() > iterTmp->second.m_nBeginTime + MIN(1)) {m_mapTmpFightState.erase(iterTmp++); } else {iterTmp++;}}




0 0
原创粉丝点击