詳見代碼:
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++;
}
}