關於std::map erase

詳見代碼:

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++;
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章